单击文本在树视图中展开/折叠组

时间:2011-01-21 15:27:31

标签: wpf treeview wpf-controls treeviewitem

如何通过单击文本而不是单击左侧的箭头来扩展/折叠TreeView中的组。

1 个答案:

答案 0 :(得分:1)

您应该使用下一个setter为您的Tree Item创建样式:

        <Style x:Key="TreeItemStyle"
               TargetType="{x:Type TreeViewItem}">                
            <Setter Property="IsExpanded"
                    Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
        </Style>

然后添加一个名为IsExpanded的组视图数据类observable属性:

    private bool _isExpanded;

    public bool IsExpanded
    {
        get
        {
            return this._isExpanded;
        }
        set
        {
            if (this._isExpanded != value)
            {
                this._isExpanded = value;
                this.OnPropertyChanged("IsExpanded");
            }
        }
    }

然后拦截超链接点击事件并将IsExpanded设置为true:

    private void Hyperlink_Click(object sender, RoutedEventArgs e)
    {
        var dc = ((Hyperlink)sender).DataContext;
        if (dc is GroupViewData)
        {
            ((GroupViewData)dc).IsExpanded = true;
        }
    }

当然,最好的方法是使用命令而不是单击处理程序,但我不知道您的表示模型的组成,因此无法提供正确的解决方案。我必须说,在具有相似要求的项目中,我们成功地避免了任何后面的视图代码。上帝保佑WPF!