3

MvxBindableTableViewCellのアクセサリをブール値にバインドする方法に固執しています。

テーブルのItemsSourceをViewModelのリストにバインドして、クリック可能なアイテムの適切なリストを表示しています。

ただし、セルのアクセサリ(UITableViewCellAccessory.Checkmark)は、このオブジェクトにフラグが付けられている場合にのみ表示されるようにします。フラグが立てられているということは、モデルのブール値がtrueに設定されていることを意味します。

セルのアクセサリをバインドする方法を知っている人はいますか?

編集:モデルのブール値に応じてアクセサリを表示できますが、バインドされていません。

protected override UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath     indexPath, object item)
    {
        UITableViewCell cell = tableView.DequeueReusableCell(CellIdentifier);
        if (cell == null)
            cell = new PlotsTableViewCell(UITableViewCellStyle.Subtitle, CellIdentifier);

        Plot p = (Plot)item;
        if (p.Done)
            cell.Accessory = UITableViewCellAccessory.Checkmark;
        return cell;
    }
4

1 に答える 1

3

おそらく、PlotsTableViewCellでこれを実行できると思います。

カスタムセルを宣言すると、実行時にそのセル内でバインドできます。

この例は、https ://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/Cells/SessionCell2.csで確認できます。セッションの表示:

細胞

セルが次のようなパブリックプロパティを提供していることがわかります。

public string RoomText
    {
    get { return Label2.Text; }
    set { if (Label2 != null) Label2.Text = value; }
    }

次に、次のようなバインディングテキストを提供します。

    'RoomText':{'Path':'Item.Session','Converter':'SessionSmallDetails','ConverterParameter':'SmallDetailsFormat'},

アクセサリをブール値にバインドするには、次のようなことができるはずです。

public bool IsDone
    {
    get { return Accessory == UITableViewCellAccessory.Checkmark; }
    set 
    {
        if (value) 
        {
            Accessory = UITableViewCellAccessory.Checkmark; 
        }
        else 
        {
            Accessory = UITableViewCellAccessory.None; 
        }
    }
    }

テキスト付き:

    'IsDone':{'Path':'Done'},

高度な手法として、セル内のアクセサリの代わりに、カスタム描画ボタン内でカスタム画像を使用することもできます。これを行う方法を確認するには、その会議サンプルでプロパティがどのようにバインドされているかを確認してください-https://github.com/slodge/MvvmCross/tree/vnext/Sample%20-%20CirriousConferenceIsFavoriteの双方向カスタムバインドを参照してください/Cirrious.Conference.UI.Touch/Bindings

于 2012-12-20T20:15:09.400 に答える