2012-01-08 7 views
2

私は以下のようなウィンドウを持っています。これらのタブが選択されている場合は、画像を「awb-white.png」と「center-weighted-white.png」に変更する必要があります。 (そして、選択されていないときに白に戻ります)。これについてはどうすればいいですか?それはXAMLで行うことができますか?タブが選択されているときに、TabControlのTabItemヘッダーの画像を変更するにはどうすればよいですか?

<Window x:Class="WpfApplication6.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <TabControl> 
     <TabItem> 
      <TabItem.Header> 
       <Image Source="images/awb-black.png" Stretch="None" /> 
      </TabItem.Header> 
      <Grid /> 
     </TabItem> 
     <TabItem> 
      <TabItem.Header> 
       <Image Source="images/center-weighted-black.png" Stretch="None" /> 
      </TabItem.Header> 
      <Grid /> 
     </TabItem> 
    </TabControl> 
</Window> 

私はWPFの新機能ですので、詳細が多く役立ちます。

答えて

2

Styleにはデフォルトのセッターを使用し、TriggerIsSelectedに追加し、新しいヘッダーの別のセッターを作成します。このよう

<TabItem> 
    <TabItem.Style> 
     <Style TargetType="TabItem"> 
       <Setter Property="Header"> 
        <Setter.Value> 
         <Image ...> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="Header"> 
          <Setter.Value> 
           <Image ...> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </Style.Triggers> 
     </Style> 
    </TabItem.Style> 
</TabItem> 

むしろあなたがTabItemを継承する場合がありますVERBOSEとImage.Sourcesbound 2へのカスタムプロパティですデフォルトtemplateで、その後、あなたは自分のインスタンス上のものを設定する必要があることを入れています。

precedenceのためにデフォルト値が設定されていることが重要であることに注意してください。直接設定した場合、トリガーはその値を上書きしません。

+0

もっと詳しく説明できますか?私はそのようなことを試してきましたが、何も動かさなかったのです。私はWPFを完全に新しくしています。 –

+0

@DaxFohl:例を追加しました。 ([その他のスタイル](http://msdn.microsoft.com/en-us/library/ms745683.aspx) –

+0

素晴らしいです! .pngファイル名パターンが常に同じであれば、そこに重複を減らす方法はありますか? –

関連する問題