WPF DataGrid没有拿起CollectionChanged事件?

时间:2011-07-08 22:14:50

标签: wpf data-binding wpfdatagrid

所以我有这个DataGrid:

<DataGrid d:DataContext="{d:DesignData Source=../DesignData/ValidationMessages.xaml}" DataContext="{Binding Messages, Mode=OneWay}" ItemsSource="{Binding Mode=OneWay}" Name="Grid">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Message}" Header="Message"/>
        <DataGridTextColumn Binding="{Binding ControlID}" Header="ID"/>
    </DataGrid.Columns>
</DataGrid>

我有这个属性:

public ObservableCollection<ValidationMessage> Messages = new ObservableCollection<ValidationMessage>();

我有这段代码:

Messages.Add(message);

DataGrid不显示更改。它应该,对吗?我觉得我已经做了一百万次了,但由于某种原因它没有用。

我已将整个控件的DataContext设置为自己的代码隐藏,没有运气。我试过搞乱绑定的BindingMode,没什么。

在执行期间检查DataGrid时,它显示Items计数为0。

任何人都知道我做错了什么,或者我能尝试什么?

1 个答案:

答案 0 :(得分:0)

我不知道您的代码有什么问题,但这样做有效。

<DataGrid ItemsSource="{Binding Mode=OneWay}" Name="Grid" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Message}" Header="Message"/>
        <DataGridTextColumn Binding="{Binding ControlID}" Header="ID"/>
    </DataGrid.Columns>
</DataGrid>

ObservableCollection<ValidationMessage> Messages = 
    new ObservableCollection<ValidationMessage>();
this.DataContext = Messages;