如何在WPF中创建不可选择的TreeViewItem

eba*_*lga 4 wpf triggers styles

我正在绑定TreeView.我的理由是树视图级别0是不可选择的.当我单击0级treeviewitem时,必须折叠当前项目并且必须选择第一个子项目.

? Item 1   //<- level 0. this item must be unselectable
?? Child Item 11 //<- level 1
?? Child Item 12
? Item 2   //<- level 0. When i click this item, that is automatically collapse
?? Child Item 21
?? Child Item 22
Run Code Online (Sandbox Code Playgroud)

如何使用风格?

Ken*_*art 7

我会在我的视图模型中做到这一点.0级项目的视图模型将具有:

public bool IsSelected
{
    get { return false; }
    set
    {
        // error checking is omitted
        Children[0].IsSelected = value;

        // let WPF know that IsSelected may have changed from what it's expecting
        this.Dispatcher.BeginInvoke((ThreadStart)delegate
        {
            this.OnPropertyChanged(() => this.IsSelected);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

你的XAML看起来像:

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

现在,只要用户点击第一级项目,VM就会拒绝被选中,而是选择其第一个子项目.

您可以使用完全相同的技术来处理折叠级别的要求.