Wpf ValidationTemplate不总是显示在TabControl中
首先是我的验证模板Wpf ValidationTemplate不总是显示在TabControl中,wpf,validation,Wpf,Validation,首先是我的验证模板 <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 B
<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个tabpages的tabcontrol,每个页面都包含文本框。如果我打开视图,从第一个选项卡页向后移动到第二个选项卡页,然后按下验证按钮-一切正常,两个选项卡页上的所有文本框都会显示我的验证模板
但是当我只是打开视图,不导航到tabpage 2,然后按下validate按钮时,只有tabpage 1上的文本框显示了验证模板。更重要的是,当我再次点击验证模板上的按钮时,它不会显示在第2页的选项卡上
有什么提示我遗漏了什么吗
编辑:
如果我使用snoop并在snoop树视图上行走到tabpage 2上的我的文本框中,那么只要我在snoop树视图中单击文本框,验证模板装饰器就会可见…如果我将以下内容添加到我的文本框样式中,它就会起作用
<Trigger Property="IsVisible" Value="false">
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
</Trigger>
<Trigger Property="IsVisible" Value="true">
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationTemplate}"/>
</Trigger>
如果我将以下内容添加到我的文本框样式中,它会正常工作
<Trigger Property="IsVisible" Value="false">
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
</Trigger>
<Trigger Property="IsVisible" Value="true">
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationTemplate}"/>
</Trigger>
我想这个问题可以解释你发生了什么。我想这个问题可以解释你发生了什么。