【发布时间】:2015-12-04 06:11:40
【问题描述】:
我已经定义了一个数据网格如下:
<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() 将项目添加到数据网格中。
我通过调用OnPropertyChanged 通知更改,但没有任何反应。
我知道OnPropertyChanged 有效,因为我有一个按钮可以使用它并得到通知。
但是,如果我切换选项卡,数据网格会突然更新!
我正在寻找不违反 MVVM 原则的解决方案
【问题讨论】: