Xamarin Forms ViewCell не отображает связанные данные со списком, но работает с кортежем
Странное поведение, когда я пытаюсь подключить ячейку просмотра в формах Xamarin для отображения данных из BindingContext.
По сути, я заполняю объект для хранения 3 изображений (помимо прочего) - я новичок в Xamarin и подумал, что постараюсь выяснить, как создать фотогалерею в стиле instagram, где у меня есть 3 кликабельных изображения в строке, и сделать Пользовательский интерфейс быстро реагирует без проблем с памятью и задержками. Возможно, это будет сделано с помощью 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, но это то же самое поведение со списком... кажется, работает только кортеж. Пока все хорошо, но что, если мне нужно использовать перечисляемые методы:(
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; }
}