2009-12-16 4 views
1

bool을 기반으로하는 텍스트 상자의 색상을 전환 할 수있는 일반 스타일 템플릿을 만들 수 있기를 원합니다. 그러나 각 텍스트 상자에 대해 고유 한 스타일을 만들어야하는 것은 아닙니다. 어떻게해야합니까?XAML - 트리거/매개 변수가있는 일반 텍스트 상자 스타일?

내가 어떻게 작동하는지 아래에 몇 가지 샘플 코드를 적어 놓았습니다. 3 개의 텍스트 상자. 모두 다른 바인딩을 사용하지만 bool을 기반으로 빨간색 또는 녹색 색상을 선택하기 위해 동일한 템플릿을 사용하려고합니다.

감사

<TextBlock Text="{Binding Text1}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool1}" /> 
<TextBlock Text="{Binding Text2}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool2}" /> 
<TextBlock Text="{Binding Text3}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool3}" /> 

      <Style x:Key="MyTextBoxTemplate" TargetType="TextBlock"> 
       <Style.Triggers> 
        <DataTrigger Value="True" Binding="{Binding ???}"> 
         <Setter Property="Foreground" Value="Green" /> 
        </DataTrigger> 
        <DataTrigger Value="False" Binding="{Binding ???}"> 
         <Setter Property="Foreground" Value="Red" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 

답변

1

당신은 또한 그 대신 태그에 대한 연결된 속성을 사용하여 텍스트 상자

<TextBlock Text="{Binding Text1}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool1}" /> 
<TextBlock Text="{Binding Text2}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool2}" /> 
<TextBlock Text="{Binding Text3}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool3}" /> 

<Style x:Key="MyTextBoxTemplate" TargetType="TextBlock"> 
    <Style.Triggers> 
     <Trigger Property="Tag" Value="True"> 
      <Setter Property="Foreground" Value="Green" /> 
     </Trigger> 
     <Trigger Property="Tag" Value="False"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

굉장합니다, 감사합니다! – Chris

1

Tag 속성을 사용할 수 있습니다.