WPF MVVM не поддерживает обновление данных в сетке данных - PullRequest
0 голосов
/ 24 августа 2011

Я хочу отобразить список заметок из объекта в WPF DataGrid с использованием MVVM

XAML:

 <DataGrid
        x:Name="NoteGrid"
        ItemsSource="{Binding NoteObj.Notes}"
        SelectedItem="{Binding CurrentNote}"
        AutoGenerateColumns="False"
        CanUserAddRows="False"
        CellEditEnding="DataGrid_CellEditEnding">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Note" Binding="{Binding NoteText}" />
            <DataGridTextColumn Header="Type" Binding="{Binding Type.Name}" />
        </DataGrid.Columns>
    </DataGrid>

Возвращаемое значение NoteObj.Notes - EntitySet.

ViewModel:

private NoteObject noteObj;
public NoteObject NoteObj
{
    get { return noteObj; }
    set { noteObj = value; OnPropertyChanged("NoteObj"); }
}

public void AddNote()
{
    var note = new Note
    {
        NoteText = "Note text",
        NoteType = 1
    };

    NoteObj.Notes.Add(note);
    DC.SubmitChanges();
    OnPropertyChanged("NoteObj");
}

Когда установлен NoteObj, DataGrid заполняется заметками, но метод AddNote не работает! Новая заметка добавляется в базу данных, но DataGrid никогда не обновляется.

Это проблема с EntitySet или я что-то упускаю в XAML?

1 Ответ

2 голосов
/ 24 августа 2011

Это будет работать, только если NoteObj.Notes реализует INotifyCollectionChanged. Вы можете достичь этого, используя класс ObservableCollection<T>.

...