Wpf 如何从标题中的元素更改TreeViewItem属性?
我有一个treeviewitem,其中header属性包含其他元素,如TextBlock。 如果TextBlock Text=“Empty”,我希望树视图项不可聚焦。 这里我设置了TextBox Focusable属性,但包含的TreeViewItem是可聚焦的 我希望包含Text=“Empty”的TextBlock的TreeViewItem不可聚焦。 谢谢 这是我的尝试Wpf 如何从标题中的元素更改TreeViewItem属性?,wpf,Wpf,我有一个treeviewitem,其中header属性包含其他元素,如TextBlock。 如果TextBlock Text=“Empty”,我希望树视图项不可聚焦。 这里我设置了TextBox Focusable属性,但包含的TreeViewItem是可聚焦的 我希望包含Text=“Empty”的TextBlock的TreeViewItem不可聚焦。 谢谢 这是我的尝试 <Grid> <TreeView> <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类中的另一个属性,并使用转换器将字符串转换为可聚焦属性的布尔值