3

我坚持如何将 MvxBindableTableViewCell 的附件绑定到布尔值。

我将表的 ItemsSource 绑定到 ViewModel 中的列表,显示了一个不错的可点击项目列表。

但是我希望单元格的附件(UITableViewCellAccessory.Checkmark)仅在标记此对象时显示。通过标记我的意思是模型中的布尔值设置为真。

有谁知道怎么绑定手机的配件吗?

编辑:我可以根据模型的布尔值显示附件,但它没有绑定。

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'},

要将附件绑定到 Bool,您应该能够执行以下操作:

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 回答