以编程方式将文本块绑定到数组索引

本文关键字:绑定 数组 索引 文本 编程 方式 | 更新日期: 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,但我真的建议这个解决方案