除非绑定模式更改,否则不显示 WPF DataGrid 数据

WPF DataGrid data not showing unless binding mode changed

提问人:Mythos 提问时间:11/15/2023 最后编辑:Mythos 更新时间:11/16/2023 访问量:41

问:

我们有一个绑定到对象“Test”的 ObservableCollection,其中 Test 继承自 INotifyPropertyChanged。但是,尽管填充了 ObservableCollection 并运行 OnPropertyChanged,但 DataGrid 在运行时仍为空。

更令人困惑的是,我们有一个非常相似的 DataGrid,以相同的方式设置,但数据稍微复杂一些,并且工作正常。此外,如果我们在调试时更改绑定模式,数据将显示在表中,并且可以按预期进行更新。

下面复制了 DataGrid 的 Xaml 和 ObservableCollection 属性

<DataGrid Name="NonFunctioningTable" ItemsSource="{Binding PopulatedList, Mode=TwoWay}" Height="388" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="false" ColumnWidth="*" Margin="0,10,0,0">
<DataGrid.Columns>
    <DataGridTextColumn Header="Column1" Binding="{Binding ObjectProperty1}" />
    <DataGridTextColumn Header="Column2" Binding="{Binding ObjectProperty2}" />
</DataGrid.Columns>
</DataGrid>


private ObservableCollection<Test> populatedList;
public ObservableCollection<Test> PopulatedList
{
    get => populatedList;
    set
    {
        populatedList = value;
        OnPropertyChanged();
    }
}
WPF MVVM 绑定数据 网格

评论

0赞 mm8 11/16/2023
将属性绑定设置为 是没有意义的。根据您在问题中提供的信息,您的问题显然是不可重现的。请提供一个最小的、可重复的例子或关闭问题。ModeItemsSourceTwoWay

答:

0赞 Mythos 11/16/2023 #1

我们已经解决了这个问题。

MainWindow.cs 中的一行是在开发之初添加的,在添加 ViewModel 之前,将表的 ItemSource 设置为 null,从而删除了绑定。