2012-06-13 2 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> 

는 지금은 이미지 옆에있는 TextBlock에 유효성 검사 오류 텍스트를 추가 할. 하지만 같은 바인딩 경로가 작동하지 않습니다. 다른 바인딩을 시도했지만 기본 스타일과 같은 바인딩에 액세스하는 방법을 알아낼 수 없습니다.

감사합니다.

답변

0

AncestorLevel없이 시도해 보셨습니까? 당신은 같은 대상이어야합니다.

+0

이봐, 네,베이스 스타일, 여러 상대 소스 구성 등에서 같은 시도했다. 일반적으로 조상 수준으로 작동하지만이 스타일로 작동하지 않는 것 :( –

0

Mode=SelfAncestorLevel 속성을 사용할 수 없습니다. Mode=Self 만 사용하십시오.

시각적 트리에서 해당 컨트롤의 상위 항목에 도달하려고하면 상위 수준이 사용됩니다.

+0

안녕하세요, 네, 기능에 대해 알고 'AncestorLevel'.이 코드 조각은 단지 "시도하는"상태 중 하나였습니다. –

관련 문제