WPF Datagrid无法更新

时间:2015-09-08 13:59:39

标签: c# wpf mvvm datagrid

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

<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原则的解决方案

1 个答案:

答案 0 :(得分:1)

更改

ItemSource="{Binding MsgCollection, IsAsync=False, Mode=OneTime}"

ItemSource="{Binding MsgCollection, IsAsync=False, Mode=TwoWay}"

WPF绑定模式:https://stackoverflow.com/a/2305234/5147720