2011-05-10 2 views
0

Je remplis dynamiquement listView et, par conséquent, je lie chaque zone de texte à une propriété. J'ai quelque chose comme:Lier TextBlock à l'index de la matrice par programme

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

Si le listview est rempli d'un animal d'objets par exemple, et que la classe Animal a une propriété à l'intérieur SomeProperty nommé alors cette colonne dans le listview contiendra la valeur de SomeProperty. Ce que j'essaye de faire est de lier à un tableau de chaînes par exemple. Disons que j'ai la même classe Animal et que cet animal a un tableau de chaînes quand je fais quelque chose comme new Binding ("array [1]") il ne lie pas. Il ne lie que lorsque je le fais à une propriété. Ou peut-être existe-t-il un moyen de créer un tableau de propriétés. Ce sera bien si je pouvais lier des données à un index de tableau

+0

Comme je sais, vous ne pouvez pas faire cela, vous devez sélectionner le nom de la propriété dans la liaison – Homam

Répondre

0

d'abord votre collection devrait être

 ObservableCollection<string> Animals 
     { 
      get; 
      set; 
     } 

Et si vous voulez que votre listview réglé dynamiquement il est plus facile aproche:

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

Et votre dataContext doit être mis à la classe avec la propriété Animals, si vous voulez vraiment faire cela en C# essayez avec ObservableCollection mais je suggère vraiment cette solution

+0

Cela fonctionne aussi. Je maid une propriété de tableau indexable et cela a fonctionné. Je pense que lorsque vous liez des contrôles, ils ne peuvent être liés qu'à des propriétés. Parce que mon tableau précédent n'était pas une propriété, c'est pourquoi cela n'a pas fonctionné. Je suis nouveau à wpf et j'aime faire la plupart des choses dans le code. –

Questions connexes