WPF MVVM databing到DataGrid中没有更新
我想从使用MVVMWPF MVVM databing到DataGrid中没有更新
在WPF的DataGrid对象显示的笔记列表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的。
视图模型:
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设置充满了音符,但AddNote法不wotk DataGrid中! 新笔记已添加到数据库,但DataGrid永远不会更新。
这是一个问题eith EntitySet或我在XAML中丢失了什么?
这只有在NoteObj.Notes
执行INotifyCollectionChanged
时才有效。您可以通过使用ObservableCollection<T>
类来实现此目的。
您是否说我需要在ViewModel中实现ObservableCollection
“Pure”MVVM指出您的实体与您的UI无关,因此您需要创建一个包含“ObservableCollection
不知何故,我无法得到这个权利。你有链接到文章/教程,显示这样的实现?用LINQ to SQL找不到一个... –
尝试添加[presentationtracesources](http://msdn.microsoft.com/zh-cn/library/system.diagnostics.presentationtracesources.tracelevel.aspx)并查看它是否在输出中提供了一些提示。 – Vegar
如果我将TraceLevel设置为“高”或“中”,则程序在SubmitChanges(行未找到或某物)上崩溃。没有输出! –
这可能表明EF有问题,而不是绑定? – Vegar