将MvxBindableTableViewCell的附件绑定到布尔值

时间:2012-12-20 14:21:19

标签: uitableview xamarin.ios mvvmcross

我坚持如何将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;
    }

1 个答案:

答案 0 :(得分:2)

我认为你可以在你的PlotsTableViewCell中做到这一点。

如果声明自定义单元格,则可以在运行时在该单元格内进行绑定。

您可以在会话显示中使用https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/Cells/SessionCell2.cs查看此示例:

Cell

您可以看到该单元格提供了以下公共属性:

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

作为一种高级技术,您还可以在自定义绘制按钮内使用自定义图像,而不是在单元格中使用附件。要了解如何执行此操作,请查看该会议示例中IsFavorite属性的绑定方式 - 请参阅https://github.com/slodge/MvvmCross/tree/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/Bindings中的双向自定义绑定