C# 如何在WPF中实现动态嵌套的侧栏菜单?

C# 如何在WPF中实现动态嵌套的侧栏菜单?,c#,wpf,xaml,sidebar,self-referencing-table,C#,Wpf,Xaml,Sidebar,Self Referencing Table,我想在WPF中实现一个侧栏作为用户控件。我想从数据库动态加载侧栏的内容。我可以添加任何菜单,我可以删除任何菜单,我可以更改数据库中的嵌套级别。有没有一种方法可以在WPF中使用XAML和C#实现这一点 我的菜单课是这样的 public class Menus { public string MenuName {get;set;} public string MenuURL {get;set;} public List<Menus> Children {get

我想在WPF中实现一个侧栏作为用户控件。我想从数据库动态加载侧栏的内容。我可以添加任何菜单,我可以删除任何菜单,我可以更改数据库中的嵌套级别。有没有一种方法可以在WPF中使用XAML和C#实现这一点

我的菜单课是这样的

public class Menus
  {
    public string MenuName {get;set;}
    public string MenuURL {get;set;}
    public List<Menus> Children {get;set;}

    public Menus()
      {
        Children = new List<Menus>();
      }
  }
公共类菜单
{
公共字符串菜单名{get;set;}
公共字符串MenuURL{get;set;}
公共列表子项{get;set;}
公共菜单()
{
Children=新列表();
}
}
我尝试过各种组合,但没有运气

输出应该是这样的

  • 主菜单1

    • 子菜单1.1
    • 子菜单1.2
      • 子菜单1.2.1
  • 主菜单2

    • 子菜单2.1
      • 子菜单2.2

因此,我可以从数据库中添加任意数量的嵌套行为。我是WPF的新手,所以我不知道很多方法。如果有任何直接的方法可以实现这一点,那么这将有助于查看,您可以将
TreeView
hierarchycaldatatemplate
一起使用。我尝试过TreeView,它可以完成动态嵌套部分,但它看起来肯定不像“侧栏”。另一件事是我想在关闭侧边栏时控制节点的展开和折叠;但是treeview本身没有isExpander属性。treeview确实有它,但我不知道如何将它与treeview一起使用,仍然可以获得所需的结果。至于treeview的外观,您需要自定义treeview、treeview和相关控件的样式。对于展开/折叠,可以使用
treevieItem.IsExpanded
属性。