Silverlight 4 DataGrid验证信息

时间:2011-02-22 18:17:27

标签: silverlight validation silverlight-4.0 datagrid

我有一个ObservableCollection,其中T:INotifyDataErrorInfo。如果我在编辑模式下使用DataGrid,并且对象上有错误,则在显示红色边框的确切列旁边,整个行的背景变为红色。

我想要相同的功能,但也在readonly模式下!问题是,DataGrid不会侦听ErrorsChanged事件,除非它进入编辑模式。我该如何解决?我是否必须继承DataGrid? (我不愿意,我宁愿使用样式或行为)我在哪里可以访问行背景的样式?

编辑:
我尝试了两件新事物:

  • 我订阅了datagrid的RowLoading事件,并从那里订阅了Row的Loaded和DataContext的ErrorsChanged事件(并在RowUnloading上取消订阅),并尝试根据这些事件处理程序的有效性设置行的VisualState。 DataContext。但是,由于设置可视状态不会更改控件的实际状态,因此当它必须更改状态时(例如,在鼠标悬停或选择时),它将更改回有效状态。
  • 使用我从ComboBoxes(see here)学到的技巧,我尝试使用row.SetBinding(DataGridRow.TagProperty,new Binding());将DataContext绑定到DataGridRow.Tag(因为Source是DataContext和路径是整个对象),但绝对没有发生任何事情,就像我之前使用ComboBox控件的发现相反,并不一定会在每个DependencyProperty上监听验证。

因此,实际解决方案越来越不可能。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看看下面的问题,它可能会有所帮助

C# Silverlight Datagrid - Row Color Change