选项卡页面之间的wpf验证刷新

时间:2012-05-04 17:48:56

标签: wpf validation tabbed-interface

我通过这个WPF验证,IDataErrorInfo,INotifyPropertyChange的东西到达那里,但刷新时出现了新问题。我有一个窗口,上面有一堆控件。我有一个标签页面界面,为简单起见,有2页......每个页面都有5个控件。

我开始“添加”记录,因此所有字段都是空白的。例如:第一页上需要验证的3个字段被正确标记为红色边框,表示它们是必需的......没问题。

现在,我点击第2页,然后立即返回第1页。红色边框全部消失。它们不会重新出现红色,除非我明确地通过它们重新聚焦它们,失去焦点并强迫它通过IDataErrorInfo进行lostfocus /属性更改验证。

首先,任何解释为什么WPF会丢失第一页的样子,因为它必须将第1页的可见性更改为显示第2页,然后再返回第1页。

其次,关于如何强制刷新控件的建议,红色边框表示需要它们。

由于

2 个答案:

答案 0 :(得分:3)

只需将您验证的控件放在AdornerDecorator中,它就能正常工作;)

 <TabItem>
  <AdornerDecorator>
    <Grid>
      <TextBox>
      </TextBox>
      ...
   </Grid>
  </AdornerDecorator>
</TabItem>

答案 1 :(得分:0)

如果我没记错的话,控件的默认错误验证标记只是覆盖在控件顶部的红色框,而不是控件本身的一部分,因此如果隐藏控件,则该叠加层的可见性不会持续存在。您可以尝试更改控件模板以直接将红色边框/标签合并为控件的一部分,并且可能会清除该问题。

要强制所有绑定刷新(以及验证它们),您需要做的就是再次为要重新验证的任何属性调用RaisePropertyChanged。这有点浪费,但是您可以使用空字符串作为参数调用RaisePropertyChanged,它将为视图模型中的所有属性引发。