在运行时将带有绑定的控件添加到 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.Forms 绑定到自定义控件不起作用