我有一个工作列表视图,它绑定到自定义单元格。但是,我想知道我是否真的必须拥有一个名为属性的模型,就像自定义单元格属性一样。
我的自定义viewcell(遗漏了很多东西):
public TopicsPage ()
{
_topicList = new ListView ();
var cell = new DataTemplate (typeof (RecordListCell));
// NOT WORKING
// cell.SetBinding (RecordListCell.HeadingProperty, "Name");
// working (I must name the property exactly like the property in my custom cell)
cell.SetBinding (RecordListCell.HeadingProperty, "Heading");
_topicList.ItemTemplate = cell;
_topicList.ItemsSource = MyRepo.GetTopics();
}
我的页面(遗漏了很多东西)
{{1}}
所以上面的工作,但我被迫让MyRepo.GetTopics()返回一个具有名为Heading属性的对象列表。我想将这个自定义单元格重用于任何类型的对象列表,只需在页面上指定绑定,就像我的评论所示,但这并不合适。
我在这里期待错误的事情还是我的方法错了?
答案 0 :(得分:1)
为label设置绑定方式是来自bindingcontext的“Header”,其中GetTopics()中没有名为“Header”的属性,因此您已将标签的绑定源设置为RecordCell。 / p>
headingLbl.SetBinding(Label.TextProperty,
new Binding("Heading",BindingMode.Default, null, null, null, source: this));
现在
cell.SetBinding (RecordListCell.HeadingProperty, "Name");
此代码应该有效,希望有所帮助!
答案 1 :(得分:0)
ListView项目的BindingContext与项目的模型相关联。你必须想出另一种方法将这些数据插入到视图单元格中。数据模板。
您可以更改自定义视图单元构造函数以接受(每页)标题值
lon = seq(1, 360, length.out = nrow(precip))
lat = seq(1, 360, length.out = ncol(precip))
并将其指定为标题值(因为它将是每页唯一的),其余的视单元内容可以照常绑定到项目源。
然后,您将使用不同的DataTemplate构造函数来创建模板:
MyCustomCell(string perPageHeadingText)