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

4

我正在绑定TreeView。我的原因是树形视图的第0级不可选择。当我单击级别0的树形视图项时,当前项必须折叠并选择第一个子项。

├ 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

如何使用样式来实现这个功能?
1个回答

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);
        });
    }
}

您的XAML应该如下所示:

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

现在,每当用户点击一级项时,VM将拒绝被选中,而是选择其第一个子项。您可以使用完全相同的技术来处理有关折叠级别的要求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接