gpt4 book ai didi

c# - WPF Datagrid 没有得到更新

转载 作者:行者123 更新时间:2023-11-30 21:55:15 36 4
gpt4 key购买 nike

我定义了一个数据网格如下:

<DataGrid Grid.Row="0" Grid.Column="0" x:Name="s" MaxHeight="300"
ItemsSource="{Binding MsgCollection, IsAsync=False, Mode=OneTime}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="BankId"
Header="Bank Nr."
Binding="{Binding BankId}"
DisplayIndex="0" />

<DataGridTextColumn x:Name="MessageB"
Header="Message B"
Binding="{Binding MessageB}"
DisplayIndex="1" />

</DataGrid.Columns>
</DataGrid>

viewModel 代码如下所示:

 public class AwesomeDataViewModel : ViewModelBase
{
...
public ObservableCollection<Bank> MsgCollection
{
get
{
return m_Msgs;
}
set
{
m_Msgs = value;
OnPropertyChanged("MsgCollection");
}
}

AwesomeRandomMethode(){
...
// bankCollection contains 200 items
MsgCollection = new ObservableCollection<Bank>(bankCollection);
OnPropertyChanged("MsgCollection");
}
}

稍后在程序中调用 AwesomeRandomMethode() 以将项目添加到 dataGrid 中。我通过调用 OnPropertyChanged 通知更改,但没有任何反应。

我知道 OnPropertyChanged 有效,因为我有一个使用它的按钮,它会收到通知。

但是,如果我切换选项卡,数据网格会突然更新!

我正在寻找一种不违反 MVVM 原则的解决方案

最佳答案

您的问题是您的绑定(bind),它应该是对源项目的双向绑定(bind)。默认绑定(bind)是 TwoWay 所以不要显式声明它。

<DataGrid Grid.Row="0" Grid.Column="0" x:Name="s" MaxHeight="300" ItemsSource="{Binding MsgCollection}">
</DataGrid>

您还应该只声明您的 ObservableCollection 并添加或删除项目。这样一切都会自动更新。

关于c# - WPF Datagrid 没有得到更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459822/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com