2010-10-14 16 views
2

Tout compile, mais lors de l'exécution, une ligne vide est affichée. Si j'essaie de modifier une entrée, il est dit "Pas de set XPath". Qu'est-ce que je fais mal? J'ai essayé une tonne de variations, de ne pas avoir l'interface INotifyPropertyChanged etc.Impossible de faire fonctionner DataGrid avec ObservableCollection

La classe de base est:

public class Variable : INotifyPropertyChanged 
    { 
     public string Name; 
     public string Value; 

     public event PropertyChangedEventHandler PropertyChanged; 

     private void NotifyPropertyChanged(String info) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs(info)); 
      } 
     } 
    } 

La collection observable est:

public class VariableCollection:ObservableCollection<Variable> 
    { 
     public VariableCollection() 
      : base() 
     { 
     } 

     public VariableCollection(List<Variable> list) 
      : base(list) 
     { 
     } 
    } 

La liaison est:

public VariablesView(VariableCollection variables) 
     { 
      InitializeComponent(); 

      gridContent.ItemsSource = variables; 
     } 

Le code XAML est:

<DataGrid Name="gridContent" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Name}" Header="Name" /> 
       <DataGridTextColumn Binding="{Binding Value}" Header="Value" /> 
      </DataGrid.Columns> 
     </DataGrid> 

Répondre

4

C'est simple. Vous avez des champs dans votre classe au lieu de propriétés.

Modifier le code:

public string Name{ get; set;} 
    public string Value{ get; set;} 
+0

OMG je ne perdu que quatre heures coincé à ce sujet. JE VOUS REMERCIE! – Kenoyer130

+0

J'utilise souvent getter setter dans mon code mais je l'ai manqué cette fois. Merci beaucoup :) –