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

时间:2010-04-21 17:20:58

标签: wpf

我有一个treeviewitem,其中header属性包含其他元素,如TextBlock。 我想如果TextBlock Text =“Empty”,TreeViewItem就不可以了。 这里我设置了TextBox Focasable属性,但是包含TreeViewItem是可以进行的。

我希望包含带有Text =“Empty”的TextBlock的TreeViewItem不可用于focasable。 感谢

这是我的尝试。

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

1 个答案:

答案 0 :(得分:1)

您需要为TreeViewItem设置Focusable属性,而不是为TextBlock设置。这就是您的项目始终可以集中注意力的原因。我建议你将属性Text(TextBlock)和属性Focusable(TreeViewItem)绑定到ViewModel类中的另一个属性,并使用转换器将字符串转换为您的Focusable属性的bool。