以编程方式将文本块绑定到数组索引
本文关键字:绑定 数组 索引 文本 编程 方式 | 更新日期: 2023-09-27 17:56:11
我正在动态填充列表视图,因此我将每个文本框绑定到一个属性。我有这样的东西:
System.Windows.FrameworkElementFactory f = new System.Windows.FrameworkElementFactory(typeof(System.Windows.Controls.TextBlock));
f.SetValue(System.Windows.Controls.TextBox.FontWeightProperty, System.Windows.FontWeights.Normal);
Binding myBinding = new Binding("SomeProperty");
f.SetBinding(System.Windows.Controls.TextBlock.TextProperty, myBinding);
例如,如果列表视图填充了一个对象 Animal,并且该类 Animal 内部有一个名为 SomeProperty 的属性,那么列表视图中的该列将包含 SomeProperty 的值。例如,我正在尝试做的是绑定到字符串数组。假设我有相同的类 Animal,并且当我做类似 new Binding("array[1]") 之类的事情时,该动物有一个字符串数组,它不会绑定。它仅在我将其绑定到属性时绑定。或者也许有一种方法可以制作属性数组。如果我能将数据绑定到数组索引,那就太好了
首先,您的收藏应该是
ObservableCollection<string> Animals
{
get;
set;
}
如果你想动态设置你的列表视图,有更简单的方法:
<ListView ItemsSource="{Binding Animals}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Height="20" Width="100"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
并且您的数据上下文应设置为具有动物属性的类,如果你真的想在 C# 中做到这一点,请尝试使用 ObservableCollection,但我真的建议这个解决方案