O WPF- Existe uma maneira de impedir que o TreeViewItems seja selecionado e ativado quando o paiRewIVEWIVEM do pai é selecionado?

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

Pergunta

Eu tenho um modelo de controle para TreeViewItems e em vez de mostrar o normal FocusVisualStyle eu tenho um MultiTrigger configure assim:

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

No entanto, isso também causa o FontWeight mudar para ousado quando um TreeViewItem's O item pai está selecionado. Existe alguma maneira de impedir que isso aconteça?

Foi útil?

Solução

Ótima pergunta. Tem a ver com precedência da propriedade da propriedade de dependência.

Isso está acontecendo porque os itens de visualização da árvore infantil não substituem a propriedade do peso -font de forma alguma, para que eles a herdem de seus pais visuais. O que você poderia fazer é adicionar outro gatilho normal para quando o ISSELECT é falso.

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

Agora, o Child TreeViewItem terá sua propriedade Fontweight definida por um gatilho que substituirá a propriedade herdada de seu pai selecionado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top