我正在使用HeaderedContentControl
来显示我的标签&文本框如下..
<Style x:Key="ContentBorderStyle" TargetType="Border">
<Setter Property="BorderBrush" Value="Blue"/>
</Style>
<Style TargetType="HeaderedContentControl" x:Key="BaseLabeledItemStyle">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<ContentPresenter Name="header"
Content="{TemplateBinding Header}"/>
</Border>
<Border Grid.Column="1"
Style="{StaticResource ContentBorderStyle}">
<AdornerDecorator>
<ContentPresenter Name="content"
Content="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Content}"/>
</AdornerDecorator>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
<HeaderedContentControl
Style="{StaticResource ResourceKey=BaseLabeledItemStyle}"
Header="Emp Name">
<!--<ContentControl>-->
<TextBox x:Name="txtName"
Text="{Binding Path=EmpName, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
</HeaderedContentControl>
因为我使用边框画笔作为内容控件的“蓝色”我的内容控件始终显示蓝色边框。当出现验证错误时,我在Headered内容控件边框内使用的文本框将变为红色,因为我使用的是ValidationOnDataerror。现在我的要求是在验证发生时(即内部文本框为红色时)在红色中更改内容边框...
我正在附加一张Image我的控件是如何填充的......因为(1)是我的内容控件的边框。 (2)是我的文本框控件。
如何根据文本框颜色更改内容控件的颜色...
提前感谢...
答案 0 :(得分:1)
您可以使用DataTrigger
进行其他突出显示
<Style x:Key="ContentBorderStyle" TargetType="Border">
<Setter Property="BorderBrush" Value="Blue"/>
<Style.Triggers>
<DataTrigger Binding="{Binding (Validation.HasError), ElementName=txtName}" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
<强>供参考:强>
如果您想在Validation.ErrorTemplate
使用Validation.ValidationAdornerSiteFor Attached Property之外的任何其他控件上显示TextBox
。 e.g。
<HeaderedContentControl Validation.ValidationAdornerSiteFor="{Binding ElementName=txtName}"
或
<Style x:Key="ContentBorderStyle" TargetType="Border">
<Setter Property="BorderBrush" Value="Blue"/>
<Setter Property="Validation.ValidationAdornerSiteFor" Value="{Binding ElementName=txtName}"/>
</Style>