0

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。现在我的要求是在验证发生时(即当内部文本框为红色时)甚至将内容边框也更改为红色...

我正在附加一个图像,我的控件是如何填充的……因为(1)是我的内容控件的边框,(2)是我的文本框控件。

如何根据文本框颜色更改内容控件的颜色...

提前致谢...

在此处输入图像描述

4

1 回答 1

1

您可以使用 aDataTrigger进行额外的突出显示

<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在任何其他控件上TextBox显示Validation.ValidationAdornerSiteFor Attached Property。例如

<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>
于 2013-05-28T21:37:07.113 回答