在运行时将带有绑定的控件添加到 Xamarin ListView?

Posted

技术标签:

【中文标题】在运行时将带有绑定的控件添加到 Xamarin ListView?【英文标题】:Adding controls with bindings to an Xamarin ListView at runtime? 【发布时间】:2020-11-03 12:00:05 【问题描述】:

我正在尝试在运行时添加一个绑定到 ListView 的标签(用于 *** 的基本示例,这不是我可以添加到 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】:

您需要使用SetBinding 并可能设置上下文

BindingContext 属性指定源对象。 SetBinding 方法指定目标属性和源属性。

示例

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

另一种选择,只是 xaml 设计时的标签(可以预编译),并在需要时更改其可见性。

注意:更改列表项的可视化树时需要小心,已完成大量缓存和优化,更改其大小可能会导致您一个问题

【讨论】:

您的回答非常有效,谢谢 :-) 您是否有任何关于这可能导致的问题的进一步信息?不想完成应用程序然后遇到问题? @Apqu 阅读此内容以查看缓存策略docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/… 太棒了,非常感谢您的帮助,非常感谢

以上是关于在运行时将带有绑定的控件添加到 Xamarin ListView?的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin 中动态添加入口控件

Xamarin XAML语言教程控件模板的模板绑定

在父项中设置绑定时,Xamarin.Forms 绑定到自定义控件不起作用

使用绑定时滚动 Xamarin Forms 列表视图

ReactiveUI 中的 Xamarin.Forms 控件是不是需要自定义绑定?

绑定 xamarin 表单选择器值的正确方法