通过单击文本来展开/折叠树视图中的组

发布于 2024-10-13 05:29:07 字数 49 浏览 3 评论 0原文

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

How do I do so that it is possible to expand/collaps groups in the TreeView simply by clicking on the text, instead of clicking the arrow to the left.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秉烛思 2024-10-20 05:29:07

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

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

然后向您的组视图数据类添加名为 IsExpanded 的可观察属性:

    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!

You should create style for your Tree Item with next setter:

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

Then add to you group view data class observable property named IsExpanded:

    private bool _isExpanded;

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

Then intercept hyper link click event and set IsExpanded as true:

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

Of course, the best way is to use commands instead of click handlers, but I don't know composition of your presentation model so can't provide proper solution. I just must say that in our projects with alike requirements we successfully avoid any view code behind. God bless WPF!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文