1

私はのコントロールテンプレートを持っており、通常をTreeViewItems表示する代わりに、次のように設定しています。FocusVisualStyleMultiTrigger

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="true"/>
        <Condition Property="IsSelectionActive" Value="true"/>
    </MultiTrigger.Conditions>
    <Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>

ただし、これにより、親アイテムが選択されFontWeightたときにも太字に変わります。TreeViewItem'sそれを防ぐ方法はありますか?

4

1 に答える 1

2

素晴らしい質問です。これは、依存関係プロパティ値の優先順位と関係があります。

これは、子ツリービューアイテムがFontWeightプロパティをオーバーライドせず、視覚的な親から継承しているために発生します。できることは、IsSelectedがfalseの場合に別の通常のトリガーを追加することです。

<Trigger Property="IsSelected" Value="false">
    <Setter Property="FontWeight" Value="Normal" />
</Trigger>
<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="true"/>
        <Condition Property="IsSelectionActive" Value="true"/>
    </MultiTrigger.Conditions>
    <Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>

これで、子TreeViewItemのFontWeightプロパティがトリガーによって設定され、選択した親から継承されたプロパティがオーバーライドされます。

于 2011-01-06T05:54:48.053 に答える