C# 创建带有WPF节的选项卡式侧栏

C# 创建带有WPF节的选项卡式侧栏,c#,.net,wpf,user-controls,controls,C#,.net,Wpf,User Controls,Controls,我正在尝试创建一个带有部分的选项卡式侧栏,如WPF中的以下内容。我考虑过几种方法,但有没有更简单、更优雅的方法呢 方法1:ListBox 使用列表框并将SelectedItem绑定到右侧内容控件绑定到的值。为了区分标题和节,我使用了DataTemplate选择器 方法2:单选按钮/复选框/切换按钮 使用单选按钮,我将所选项目绑定到内容控件。但是,由于WPF错误,我将不得不使用值转换器将它们链接在一起 在这上面再加一点样式,我认为它可以很好地工作 <TabControl Tab

我正在尝试创建一个带有部分的选项卡式侧栏,如WPF中的以下内容。我考虑过几种方法,但有没有更简单、更优雅的方法呢

方法1:ListBox

使用
列表框
并将SelectedItem绑定到右侧内容控件绑定到的值。为了区分标题和节,我使用了DataTemplate选择器


方法2:单选按钮/复选框/切换按钮

使用单选按钮,我将所选项目绑定到内容控件。但是,由于WPF错误,我将不得不使用值转换器将它们链接在一起



在这上面再加一点样式,我认为它可以很好地工作

    <TabControl TabStripPlacement="Left">
        <TabControl.Resources>
            <Style TargetType="TabItem" x:Key="SideBarSectionStyle">
                <Setter Property="IsEnabled" Value="False" />
                <Setter Property="FontSize" Value="16" />
                <Setter Property="Foreground" Value="LightGreen" />
            </Style>
        </TabControl.Resources>

        <TabItem Header="Section A" Style="{StaticResource SideBarSectionStyle}" />
        <TabItem Header="Tab Item 1" IsSelected="True" />
        <TabItem Header="Tab Item 2" />
        <TabItem Header="Tab Item 3" />
        <TabItem Header="Tab Item 4" />
        <TabItem Header="Tab Item 5" />
        <TabItem Header="Section B" Style="{StaticResource SideBarSectionStyle}" />
        <TabItem Header="Tab Item 6" />
        <TabItem Header="Tab Item 7" />
        <TabItem Header="Tab Item 8" />
        <TabItem Header="Tab Item 9" />
    </TabControl>

这里还有一些想法:

  • (可能是最理想的)使用树视图和模板来隐藏展开按钮的父级和子级。应该能帮你找到隐藏它们的方法

  • 不要使用1个列表框,而是使用多个列表框,每个列表框代表不同类别的选项。如果需要,可以使用相同的模板或不同的模板。此外,我会将标题保留在列表框之外,并将其作为标签或位于列表视图上方的任何内容。您可以调整列表框上的边距,以获得与树视图类似的父/子缩进


  • 如果你的边栏是分层的,为什么不在Approach 1中使用TreeView而不是ListBox?你能禁用TreeView的展开/折叠吗?为什么我没有想到