当我尝试连接Xamarin Forms中的视单元以显示来自BindingContext的数据时出现奇怪的行为。
基本上我填充一个对象来容纳3个图像(除了其他东西) - 我是Xamarin的新手并且想我想弄清楚如何构建一个Instagram式的照片库,我有3个每行可点击的图像,使UI快速响应,没有滞后和内存问题。探索使用listview执行此操作可能因此我可以获得viewcell重用功能?? ...
无论如何,我通过BindingContext将此对象传递给自定义视图单元格。使用元组时,图像显示出一些东西。但是,如果我使用列表项,它就不会。
我不明白为什么它会显示为一个而不显示另一个 - 元组和列表同时填充并保存信息?
public class ExploreVCell : ViewCell
{
public ExploreVCell()
{
Image image1 = new Image();
Image image2 = new Image();
Image image3 = new Image();
// List<StylePost> list;
Label lbl = new Label ();
Grid grid = new Grid
{
Padding = new Thickness(10),
RowDefinitions = { new RowDefinition { Height = GridLength.Star } },
ColumnDefinitions = {
new ColumnDefinition { Width = GridLength.Star },
new ColumnDefinition { Width = GridLength.Star },
new ColumnDefinition { Width = GridLength.Star }
},
BackgroundColor=Color.Blue
};
grid.Children.Add(image1, 0, 0);
grid.Children.Add(image2, 1, 0);
grid.Children.Add(image3, 2, 0);
View = grid;
image1.SetBinding<ListViewRow>(Image.SourceProperty, i => i.MyTuple.Item1.ImageUrl);
image2.SetBinding<ListViewRow>(Image.SourceProperty, i => i.MyTuple.Item2.ImageUrl);
image3.SetBinding<ListViewRow>(Image.SourceProperty, i => i.MyTuple.Item3.ImageUrl);
以上是有效的,但是当我将图像绑定换成通过以下设置进行设置时
// doesnt work with these lines - weird
image1.SetBinding<ListViewRow>(Image.SourceProperty, i => i.RowData[0].ImageUrl);
image2.SetBinding<ListViewRow>(Image.SourceProperty, i => i.RowData[1].ImageUrl);
image3.SetBinding<ListViewRow>(Image.SourceProperty, i => i.RowData[2].ImageUrl);
这是在我将数据填入其中后绑定到视单元的类。正如您所看到的,我使用的是ObservableCollection,但它与List的行为相同......只有一个元组似乎有效。它现在很好但是如果我需要使用枚举方法怎么办:(
public class ListViewRow
{
public ListViewRow(StylePost p, StylePost q, StylePost r)
{
MyTuple = new Tuple<StylePost, StylePost, StylePost>(p, q, r);
RowData = new ObservableCollection<StylePost>();
RowData.Add(p);
RowData.Add(q);
RowData.Add(r);
}
public Tuple<StylePost, StylePost, StylePost> MyTuple { get; set; }
public ObservableCollection<StylePost> RowData { get; set; }
}