2012-06-13 128 views
0

我有一个基础风格和wpf风格。WPF风格绑定到基本风格

基本样式为:

<Style x:Key="BaseTextBox" TargetType="{x:Type TextBox}"> 
    <Setter Property="Background" Value="#DDFFDD" /> 
    <Setter Property="MinWidth" Value="75" /> 
    <Setter Property="behaviors:OCCInteraction.Triggers" Value="{StaticResource ResourceKey=validationTrigger}" /> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="true"> 
      <Setter Property="Background" Value="#FFDDDD"/> 
      <Setter Property="ToolTip" Value="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

而具体的风格是:

<Style x:Key="EditableTextBox" TargetType="{x:Type TextBox}" BasedOn="{StaticResource ResourceKey=BaseTextBox}"> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <ControlTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Border BorderBrush="Red" BorderThickness="1" Padding="0" Margin="0"> 
         <AdornedElementPlaceholder Margin="0"/> 
        </Border> 
        <TextBlock Text="test" /> 
        <Image Style="{StaticResource ResourceKey=WarningImage}"/> 
        <TextBlock Text="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Mode=Self,AncestorLevel=2}}" /> 

       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

现在我想验证错误文本旁边添加一个文本块到图像。但是相同的绑定路径不起作用。我尝试了不同的绑定,但我不知道如何访问基础样式上的相同绑定。

感谢您的帮助:)

回答

0

您是否尝试过没有AncestorLevel?你应该是同一个对象。

+0

嘿,是的,我尝试了相同的基地风格,几个相对源配置等通常我会与祖先级别,但这似乎不适用于样式:( –

0

您不能使用Mode=SelfAncestorLevel属性。只需使用Mode=Self

当您尝试在视觉树中到达该控件的父级时使用祖先级别。

+0

嘿,是的,我知道的功能'AncestorLevel'。这段代码只是我的“正在尝试”的一个状态。 –