在运行时将带有绑定的控件添加到 Xamarin ListView?
Adding controls with bindings to an Xamarin ListView at runtime?
我正在尝试在运行时添加一个绑定到 ListView 的标签(用于 Whosebug 目的的基本示例,这不是我可以添加到 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 单元格的绑定数据并以此方式设置标签文本?
您需要使用 SetBinding 并可能设置 context
- The
BindingContext
property specifies the source object.
- The
SetBinding
method specifies the target property and source property.
例子
label.SetBinding(Label.TextProperty, "TestLabelText");
另一种选择是 xaml 设计时的标签(可以预编译),并在需要时更改其可见性。
注意 : 更改列表项的可视化树时需要小心,有很多缓存和优化完成,更改其大小可能会给您带来问题
我正在尝试在运行时添加一个绑定到 ListView 的标签(用于 Whosebug 目的的基本示例,这不是我可以添加到 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 单元格的绑定数据并以此方式设置标签文本?
您需要使用 SetBinding 并可能设置 context
- The
BindingContext
property specifies the source object.- The
SetBinding
method specifies the target property and source property.
例子
label.SetBinding(Label.TextProperty, "TestLabelText");
另一种选择是 xaml 设计时的标签(可以预编译),并在需要时更改其可见性。
注意 : 更改列表项的可视化树时需要小心,有很多缓存和优化完成,更改其大小可能会给您带来问题