2010-10-14 1 views
2

Все компилируется, но во время выполнения отображается пустая строка. Если я попытаюсь отредактировать запись, в ней будет указано «No XPath set». Что я делаю не так? Я попробовал тонну вариаций, не имея INotifyPropertyChanged интерфейс и т.д.Невозможно получить работу DataGrid с ObservableCollection

Базовый класс:

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

Наблюдаемая коллекция:

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

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

Связывание является:

public VariablesView(VariableCollection variables) 
     { 
      InitializeComponent(); 

      gridContent.ItemsSource = variables; 
     } 

XAML:

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

ответ

4

Это просто. У вас есть поля в вашем классе вместо свойств.

Изменить код:

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

OMG я только впустую, как четыре часа застряли на этом. СПАСИБО! – Kenoyer130

+0

Я использую геттер-сеттер много раз в моем коде, но на этот раз я пропустил его. Большое спасибо :) –