【问题标题】:Silverlight 4 DataGrid validation infoSilverlight 4 DataGrid 验证信息
【发布时间】:2011-07-02 05:08:16
【问题描述】:

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

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

编辑:
我尝试了两个新东西:

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

因此,找到切实可行的解决方案的可能性越来越小。有什么想法吗?

【问题讨论】:

    标签: silverlight validation silverlight-4.0 datagrid


    【解决方案1】:

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

    C# Silverlight Datagrid - Row Color Change

    【讨论】:

    • 嗯,它确实给了我改变 DataGridRow 的 VisualState 的想法,但这仅适用于行的 Loaded 事件,而不适用于网格的 LoadingRow...此外,网格覆盖了鼠标悬停的行!
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多