2011-05-10 48 views
0

我正在动态填充listView,结果我将每个文本框绑定到属性。我有类似:以编程方式将TextBlock绑定到数组索引

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); 

如果列表视图充满例如对象动物和动物类有一个名为SomeProperty里面的属性然后在列表视图的列将包含SomeProperty的价值。我想要做的是绑定到一个字符串数组例如。假设我有同样的动物类,并且当我做一些像它不绑定的新Binding(“array [1]”)时,动物就有一个字符串数组。只有当我对某个属性进行操作时它才具有约束力。或者也许有一种制作属性数组的方法。这将是很好,如果我可以将数据绑定到数组索引

+0

据我所知,你不能那样做,你必须在绑定中选择属性名称 – Homam 2011-05-10 05:39:10

回答

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> 

如果你真的想在C#中使用ObservableCollection尝试使用动态属性 ,那么你的dataContext应该设置为类,但我真的建议这个解决方案

+0

也可以。我佣人可索引数组属性和它的工作。我认为,当你绑定控件时,他们只能绑定到属性。因为我之前的数组不是一个属性,所以它不起作用。我是wpf的新手,我喜欢用代码来完成大部分工作。 – 2011-05-10 15:01:16

相关问题