私は、Webサイト上のナビゲーションバーのように、WPFで再利用可能なナビゲーションスタイルカスタムコントロールを作成しようとしています。それは私のアプリのすべてのメインページへのリンクを含みます。このコントロールは、NavigationWindow内のすべてのページの上に置くことができます。ウェブサイトのように、ページ全体に一貫した見た目と感触を与えます。WPFスタイルアクティブなアイテム
私の問題は、現在のページのリンクと他のページのリンクとのスタイルを変えることです。そのため、すばやく目を通し、現在のページを確認できます。コントロールは各ページで同じなので、どのページが「アクティブ」であるかを教えて、適切にリンクをスタイルする必要があります。
私の最初の考えは、コントロールのアクティブプロパティを各ページに1つずつ配置し、そのページで適切なプロパティをtrueに設定することでした。
<local:Header IsHomePageActive="True" />
が今私のヘッダーカスタムコントロールのコントロールテンプレートで、私はDataTriggerを作成することができます。
例を(または私は、いずれかの方法を代わりに多くの特性を有するの列挙値を受け入れつのプロパティを使用することができます)それは、このプロパティを時計:
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource FindAncestor, AncestorType={x:Type local:Header}}, Path=IsHomePageActive}" Value="true">
<Setter ... />
<Setter ... />
<Setter ... />
</DataTrigger>
</Style>
すべてその背景の後、ここに私の質問です。これは動作しますが、トリガーが1つのリンクにのみ適用される「IsHomePageActive」プロパティを直接参照する必要があるため、DataTriggerとその中のすべてのSetterを複製する必要があります。だから実際のSTYLEの記述はまったく同じです(私が意味するところは、Settersは同じですが)、すべてのリンクに異なるStyleが必要です。唯一の違いは、トリガーが見ているプロパティです。
何百もの複製されたXAMLの行に終わることなくこれを行う方法がありますか?