WPF-親ツリービューアイテムが選択されたときに選択され、アクティブになるのTreeViewItemsを停止する方法はありますか?

StackOverflow https://stackoverflow.com/questions/4612142

質問

私はTreeViewItemsのため、代わりに私がFocusVisualStyleこのように設定している通常のMultiTriggerを示すのコントロールテンプレートを持っています:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="true"/>
        <Condition Property="IsSelectionActive" Value="true"/>
    </MultiTrigger.Conditions>
    <Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
しかし、これはまたFontWeightの親アイテムが選択されたときに大胆に変更しTreeViewItem'sの原因となります。私は起きてからそれを停止することができます任意の方法はありますか?

役に立ちましたか?

解決

グレート質問です。これは依存関係プロパティ値の優先順位に関係しています。

彼らは彼らの視覚的な親からそれを継承しているので、子ツリービュー項目がどのような方法でたfontWeightプロパティをオーバーライドしていないため、

これが起こっています。あなたは何ができることはIsSelectedが偽のときのために、他の通常のトリガーを追加することです。

<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>

今の子供は、ツリービューアイテムは、その選択された親から継承されたプロパティをオーバーライドしますトリガによってそのたfontWeightプロパティセットを持つことになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top