Добавление элементов управления с привязками к Xamarin ListView во время выполнения? - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь добавить метку с привязкой к ListView во время выполнения (пример c для StackOverflow, это не то, что я могу просто добавить в XAML ItemTemplate).

Проблема Я столкнулся с тем, что если я добавлю метку с привязкой следующим образом:

private void Cell_OnAppearing(object sender, EventArgs e)
{
     View view = ((ViewCell) sender).View;
     StackLayout myStackLayout= (StackLayout)view.FindByName("myStackLayout");
     Label lblTest = new Label()
     {
          HorizontalOptions = LayoutOptions.StartAndExpand,
          VerticalOptions = LayoutOptions.Center,
          Text = "{Binding TestLabelText}"
     };
     myStackLayout.Children.Add(lblTest);
}

Вместо того, чтобы отображать результат привязки, метка просто отображает текст «{Binding TestLabelText}».

Есть ли способ заставить это работать или, альтернативно, получить доступ к связанным данным для этой ячейки ListView и установить таким образом текст метки?

1 Ответ

1 голос
/ 14 июля 2020

Вам необходимо использовать SetBinding и потенциально установить контекст

  • Свойство BindingContext определяет исходный объект.
  • Метод SetBinding определяет целевое свойство и свойство источника.

Пример

label.SetBinding(Label.TextProperty, "TestLabelText");

Другой альтернативой является xaml метка во время разработки (где ее можно предварительно скомпилировать) и при необходимости изменить ее видимость.

Примечание : вам необходимо Будьте осторожны при изменении визуального дерева элемента списка, выполняется много кэширования и оптимизации, изменение его размера может вызвать проблемы

...