WPF MVVM 数据绑定到数据网格未更新

发布于 2024-11-30 21:49:43 字数 1155 浏览 0 评论 0 原文

我想使用 MVVM XAML 显示 WPF DataGrid 中对象的注释列表

 <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 中遗漏了某些内容?

I want to display a list of notes from an object in a WPF DataGrid using 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>

The return-value of NoteObj.Notes is 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");
}

When NoteObj is set the DataGrid is filled with notes but the AddNote-method doesn't wotk!
The new note is added to the database, but the DataGrid is never updated.

Is it a problem eith EntitySet or am I missing something in the XAML?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪失控 2024-12-07 21:49:43

仅当 NoteObj.Notes 实现 INotifyCollectionChanged。您可以通过使用类 ObservableCollection 来实现此目的

This will only work if NoteObj.Notes implements INotifyCollectionChanged. You can achieve this by using the class ObservableCollection<T>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文