WPF 左侧栏

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; } }

浙公网安备 33010602011771号