Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf ValidationTemplate不总是显示在TabControl中_Wpf_Validation - Fatal编程技术网

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>


我想这个问题可以解释你发生了什么。我想这个问题可以解释你发生了什么。