以编程方式将TextBlock绑定到数组索引

时间:2011-05-10 05:24:54

标签: c# binding

我正在动态填充listView,因此我将每个文本框绑定到一个属性。我有类似的东西:

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,并且该类具有名为SomeProperty的属性,则listview中的该列将包含SomeProperty的值。我想要做的是绑定到一个字符串数组,例如。假设我有相同的类Animal,当我做一些新的Binding(“array [1]”)它没有绑定时,动物有一个字符串数组。它只在我对一个财产这样做时才会绑定。或者也许有一种制作属性数组的方法。如果我可以将数据绑定到数组索引

,那将会很好

1 个答案:

答案 0 :(得分:0)

首先你的收藏应该是

       ObservableCollection<string> Animals
       {
           get;
           set;
       }

如果您想动态设置列表视图,则更容易理解:

        <ListView ItemsSource="{Binding Animals}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}" Height="20" Width="100"></TextBlock>
            </DataTemplate>
        </ListView.ItemTemplate>
       </ListView>

并且您的dataContext应该设置为具有Animals属性的类, 如果你真的想在C#中尝试使用ObservableCollection,但我真的建议这个解决方案