Wpf 如何从标题中的元素更改TreeViewItem属性?

Wpf 如何从标题中的元素更改TreeViewItem属性?,wpf,Wpf,我有一个treeviewitem,其中header属性包含其他元素,如TextBlock。 如果TextBlock Text=“Empty”,我希望树视图项不可聚焦。 这里我设置了TextBox Focusable属性,但包含的TreeViewItem是可聚焦的 我希望包含Text=“Empty”的TextBlock的TreeViewItem不可聚焦。 谢谢 这是我的尝试 <Grid> <TreeView> <TreeViewItem

我有一个treeviewitem,其中header属性包含其他元素,如TextBlock。 如果TextBlock Text=“Empty”,我希望树视图项不可聚焦。 这里我设置了TextBox Focusable属性,但包含的TreeViewItem是可聚焦的

我希望包含Text=“Empty”的TextBlock的TreeViewItem不可聚焦。 谢谢

这是我的尝试

    <Grid>
    <TreeView>
        <TreeViewItem>
            <TreeViewItem.Header>
                <TextBlock Text="John">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                                    <Trigger Property="Text" Value="Empty">
                                    <Setter Property="Background" Value="Red" />
                                        <Setter Property="Focusable" Value="False"></Setter>
                                    </Trigger>
                        </Style.Triggers>
                    </Style>
                    </TextBlock.Style>
                </TextBlock>
            </TreeViewItem.Header>
        </TreeViewItem>
        <TreeViewItem>
            <TreeViewItem.Header>
                <TextBlock Text="Empty">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                           <Trigger Property="Text" Value="Empty">
                                    <Setter Property="Background" Value="Red" />
                                        <Setter Property="Focusable" Value="False"></Setter>
                                    </Trigger>
                        </Style.Triggers>
                    </Style>
                    </TextBlock.Style>
                </TextBlock>
            </TreeViewItem.Header>
        </TreeViewItem>
    </TreeView>
</Grid>

您需要为TreeViewItem而不是TextBlock设置Focusable属性。这就是为什么您的项目始终是可聚焦的。我建议您将属性文本(TextBlock的)和属性Focusable(TreeViewItem的)绑定到ViewModel类中的另一个属性,并使用转换器将字符串转换为Focusable属性的布尔值。

您需要的是为TreeViewItem设置Focusable属性,而不是为TextBlock设置Focusable属性。这就是为什么您的项目始终是可聚焦的。我建议您将(TextBlock的)属性文本和(TreeViewItem的)可聚焦属性绑定到ViewModel类中的另一个属性,并使用转换器将字符串转换为可聚焦属性的布尔值