我坚持如何将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;
}
答案 0 :(得分:2)
我认为你可以在你的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'},
作为一种高级技术,您还可以在自定义绘制按钮内使用自定义图像,而不是在单元格中使用附件。要了解如何执行此操作,请查看该会议示例中IsFavorite
属性的绑定方式 - 请参阅https://github.com/slodge/MvvmCross/tree/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Touch/Bindings中的双向自定义绑定