【发布时间】:2013-10-21 08:30:27
【问题描述】:
首先是我的验证模板
<ControlTemplate x:Key="ValidationTemplate" >
<Grid>
<AdornedElementPlaceholder Name="MyAdornedElement" />
<Path x:Name="path" Margin="-2,-2,0,0" Data="M 0,10 L 10,0 L 0,0 Z" Fill="{StaticResource BrushError}" StrokeThickness="2" Stroke="White"
Visibility="{Binding ElementName=MyAdornedElement,Path=AdornedElement.Visibility}"
ToolTip="{Binding ElementName=MyAdornedElement,Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent}"/>
</Grid>
</ControlTemplate>
和我的文本框样式
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationTemplate}"/>
<Setter Property="UndoLimit" Value="0"/>
<Style.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="BorderThickness" Value="{StaticResource IsFocusBorderThickness}"/>
<Setter Property="BorderBrush" Value="{StaticResource IsFocusBorderBrush}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{StaticResource IsDisabledForegroundBrush}"/>
</Trigger>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding Path=(Validation.Errors).CurrentItem.ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
现在是神秘人的行为
我有一个带有 2 个标签页的标签控件,每个页面都包含文本框。如果我打开视图并从第一个标签页向后移动到第二个标签页,然后按下验证按钮 - 一切都很好,我的验证模板会显示在两个标签页上的所有文本框中。
但是当我只是打开视图而不导航到标签页 2 - 然后按下验证按钮 - 只是标签页 1 上的文本框显示了验证模板。更甚的是,当我再次点击验证模板上的按钮时,它不会显示在标签页 2 上。
任何提示我缺少什么?
编辑: 如果我使用 snoop 并在 snoop treeview 上走到标签页 2 上的文本框,那么只要我单击 Snoop Treeview 中的 TextBox,验证模板装饰器就可见...
【问题讨论】:
-
我认为这个问题可以解释发生在你身上的事情。 stackoverflow.com/questions/9907075/…
标签: wpf validation