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; }

}

0 ответов

Другие вопросы по тегам