WPF 左侧栏

e341eca6-2971-4f0f-bfe9-ead1ac31e082

 

 1.Xaml

<Border BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="5" Background="#001c33">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TreeView Grid.Column="0" Background="#1c1f25" FontWeight="Black" Margin="10" Padding="0,10" Width="150" BorderThickness="0" VerticalAlignment="Top">
            <TreeView.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#001c33"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#001c33"/>
                <Style TargetType="TreeViewItem">
                    <Setter Property="Foreground" Value="White" />
                    <Setter Property="Padding" Value="0, 3" />
                    <Setter Property="Margin" Value="0, 3" />
                    <Setter Property="FontSize" Value="15" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="TreeViewItem">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition/>
                                    </Grid.RowDefinitions>
                                    <Border x:Name="Bd" Background="Transparent" Grid.Row="0" Padding="{TemplateBinding Padding}">
                                        <ContentPresenter x:Name="PART_Header" ContentSource="Header" Margin="10,0,0,0" VerticalAlignment="Center" IsHitTestVisible="True"
                                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
                                    </Border>
                                    <ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Margin="20,0,0,0"/>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsSelected" Value="True">
                                        <Setter TargetName="Bd" Property="Background" Value="#001c33"/>
                                    </Trigger>
                                    <Trigger Property="IsExpanded" Value="False">
                                        <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <EventSetter Event="MouseLeftButtonUp" Handler="TreeViewItem_Click"/>
                </Style>
            </TreeView.Resources>
            <TreeViewItem Header="气象参数" FontSize="18">
                <TreeViewItem Header="地面温度" Tag="SurfaceTempCtl"/>
                <TreeViewItem Header="地面湿度" Tag="GroundHumCtl"/>
                <TreeViewItem Header="地面压强" Tag="GroundPressCtl"/>
                <TreeViewItem Header="云层温度" Tag="InfrTempCtl"/>
                <TreeViewItem Header="云底高度" Tag="YdgdCtl"/>
                <TreeViewItem Header="降雨量" Tag="RainVolCtl"/>
            </TreeViewItem>
            <TreeViewItem Header="廓线时空分布图" FontSize="18">
                <TreeViewItem Header="水汽密度" Tag="ChartCtl3"/>
                <TreeViewItem Header="相对湿度" Tag="ChartCtl4"/>
                <TreeViewItem Header="温度" Tag="ChartCtl1"/>
                <TreeViewItem Header="边界层" Tag="ChartCtl8"/>
                <TreeViewItem Header="折射率" Tag="ChartCtl2"/>
                <TreeViewItem Header="液态水" Tag="ChartCtl5"/>
            </TreeViewItem>
            <TreeViewItem Header="廓线实时数据" FontSize="18">
                <TreeViewItem Header="水汽密度" Tag="MapCtl3"/>
                <TreeViewItem Header="相对湿度" Tag="MapCtl4"/>
                <TreeViewItem Header="温度" Tag="MapCtl1"/>
                <TreeViewItem Header="边界层" Tag="MapCtl8"/>
                <TreeViewItem Header="折射率" Tag="MapCtl2"/>
                <TreeViewItem Header="液态水" Tag="MapCtl5"/>
            </TreeViewItem>
            <TreeViewItem Header="通道亮温" FontSize="18">
                <TreeViewItem Header="K通道亮温" Tag="KBrightTempCtl"/>
                <TreeViewItem Header="V通道亮温" Tag="VBrightTempCtl"/>
                <TreeViewItem Header="水汽总含量" Tag="VaporCtl"/>
                <TreeViewItem Header="路径液态水含量" Tag="liquidCtl"/>
            </TreeViewItem>
            <TreeViewItem Header="大气不透明度" Tag="TaoCtl" FontSize="18"/>
            <TreeViewItem Header="艾玛图" Tag="EmaCtl" FontSize="18"/>
            <TreeViewItem Header="二次应用产品" FontSize="18">
                <TreeViewItem Header="AI" Tag="PlanCtl1"/>
                <TreeViewItem Header="SI" Tag="PlanCtl4"/>
                <TreeViewItem Header="KI" Tag="PlanCtl2"/>
                <TreeViewItem Header="TTI" Tag="PlanCtl5"/>
                <TreeViewItem Header="LI" Tag="PlanCtl3"/>
                <TreeViewItem Header="BLH" Tag="PlanCtl6"/>
            </TreeViewItem>
        </TreeView>
        <Grid Name="CenterGrid" Grid.Column="1"/>
    </Grid>
</Border>

2.Xaml.cs

        private void TreeViewItem_Click(object sender, MouseButtonEventArgs e)
        {
            if (sender is TreeViewItem item)
            {
                // 检查是否为一级菜单(父级是 TreeView)
                if (item.Parent is TreeView treeView)
                {
                    // 如果有子项,切换展开/折叠状态
                    if (item.HasItems)
                    {
                        item.IsExpanded = !item.IsExpanded;

                        // 折叠其他一级菜单
                        foreach (var otherItem in treeView.Items.OfType<TreeViewItem>())
                        {
                            if (otherItem != item && otherItem.HasItems)
                            {
                                otherItem.IsExpanded = false;
                            }
                        }
                        // 显示所有二级菜单对应的用户控件
                        if (item.IsExpanded)
                        {
                        }
                    }
                    else if (item.Tag is string controlName)
                    {
                    }
                }
                else if (item.Parent is TreeViewItem) // 二级菜单
                {
                    // 显示单个用户控件
                    if (item.Tag is string controlName)
                    {
                    }
                }
                // 选中当前项
                item.IsSelected = true;
                item.Focus();
                // 阻止事件冒泡
                e.Handled = true;
            }
        }

 

posted @ 2025-07-31 17:02  超级驼鹿  阅读(11)  评论(0)    收藏  举报
/*