2012-04-04 3 views
1

私はTabControlを持っていて、他のタブの中には「エラー」というものがあります。 "ErrorsExist"という特定のプロパティがtrueに設定されていると、そのヘッダーフォアグラウンドが赤になる必要があります。私はこの2つの問題を抱えているTabItemのヘッダーフォアグラウンドを設定するには?

public class ErrorsExistToForegroundColorConverter: IValueConverter 
{ 

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     switch ((bool)value) 
     { 
      case true: 
      return Brushes.Red; 
      case false: 
      return Brushes.Black; 
      default: 
      return Binding.DoNothing; 
     } 
    } 

  <TabControl > 
      <TabControl.Resources> 
       <conv:ErrorsExistToForegroundColorConverter x:Key="ErrorsExistToForegroundColorConverter"/> 

       <Style TargetType="{x:Type TabItem}"> 
        <Setter Property="HeaderTemplate"> 
         <Setter.Value> 
          <DataTemplate> 
           <TextBlock Foreground="{Binding Path=ErrorsExist, Converter={StaticResource ErrorsExistToForegroundColorConverter}}" Text="{Binding}"/> 
          </DataTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </TabControl.Resources> 

      <TabItem x:Name="ErrorsTab" Header="Errors"> 

はここに私のコンバータです。ここに私のコードです。

まず、すべてのタブヘッダーが赤に設定され、ErrorsTabタブでのみ行う必要があります。

第2に、それだけでは機能しません。つまり、コンバーターのConvert()メソッドは呼び出されません。これで私を助けてくれますか?

ありがとうございました。

答えて

1

のみを変更し、よりよいこの単純なタスクのためにDataTriggerを使用したいのTabItemにスタイルを割り当てます。

<TabItem x:Name="ErrorsTab" Header="Errors"> 
    <TabItem.Style> 
     <Style TargetType="{x:Type TabItem}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ErrorsExist}" Value="True"> 
       <Setter Property="Foreground" Value="Red"/> 
      </DataTrigger> 
     </Style.Triggers> 
     </Style> 
    </TabItem.Style> 
    </TabItem> 

EDIT:

問題のTabItemのヘッダーがdoesnのことです親のTabItemのDataContextを継承しません。あなたはこれを手動でTabHeaderのDataContextを設定するコンバータで動作するように取得したい場合は は:

  <TextBlock DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" 
        Foreground="{Binding ErrorsExist,Converter={StaticResource ErrorsExistToForegroundColorConverter}}" Text="{Binding}"/> 
+0

は、それが働いた、どうもありがとうございました。私はなぜそれがコンバータで動作していないのだろうかと思っています... –

+0

あなたは大歓迎です。投稿を編集して、コンバータベースのソリューションを追加しました... – SvenG

+0

奇妙な、私はそれを参照してください... –

関連する問題