优化桌面端折叠菜单
This commit is contained in:
@@ -5,15 +5,27 @@ namespace YY.Admin.Module
|
||||
{
|
||||
public class TabSource : BindableBase
|
||||
{
|
||||
private string? _name;
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public virtual string? Name { get; set; }
|
||||
public virtual string? Name
|
||||
{
|
||||
get => _name;
|
||||
set => SetProperty(ref _name, value);
|
||||
}
|
||||
|
||||
private string? _icon;
|
||||
|
||||
/// <summary>
|
||||
/// 图标
|
||||
/// </summary>
|
||||
public virtual string? Icon { get; set; }
|
||||
public virtual string? Icon
|
||||
{
|
||||
get => _icon;
|
||||
set => SetProperty(ref _icon, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图标类型
|
||||
|
||||
@@ -165,6 +165,18 @@ namespace YY.Admin.ViewModels
|
||||
set => SetProperty(ref _isAppSettingsOpen, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为 true 时隐藏左侧功能菜单树(次级侧栏)
|
||||
/// </summary>
|
||||
private bool _isMenuTreePanelCollapsed;
|
||||
public bool IsMenuTreePanelCollapsed
|
||||
{
|
||||
get => _isMenuTreePanelCollapsed;
|
||||
set => SetProperty(ref _isMenuTreePanelCollapsed, value);
|
||||
}
|
||||
|
||||
private NavItem? _menuTreeToggleNavItem;
|
||||
|
||||
private AppSettingsViewModel? _appSettingsViewModel;
|
||||
public AppSettingsViewModel? AppSettingsViewModel {
|
||||
get => _appSettingsViewModel;
|
||||
@@ -175,6 +187,7 @@ namespace YY.Admin.ViewModels
|
||||
public ICommand ResetAppSettingsCommand { get; }
|
||||
public ICommand OpenAppSettingsCommand { get; }
|
||||
public ICommand OpenServerSettingsCommand { get; }
|
||||
public ICommand ToggleMenuTreePanelCommand { get; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -212,6 +225,7 @@ namespace YY.Admin.ViewModels
|
||||
OpenAppSettingsCommand = new DelegateCommand(OpenAppSettings);
|
||||
ResetAppSettingsCommand = new DelegateCommand(ResetAppSettings);
|
||||
OpenServerSettingsCommand = new DelegateCommand(OpenServerSettings);
|
||||
ToggleMenuTreePanelCommand = new DelegateCommand(ToggleMenuTreePanel);
|
||||
|
||||
// 初始化Sidebar数据
|
||||
InitNavItems();
|
||||
@@ -300,6 +314,13 @@ namespace YY.Admin.ViewModels
|
||||
Name = "Tab区域",
|
||||
Command = new DelegateCommand<NavItem>(OnOpenOrActivateTab)
|
||||
},
|
||||
(_menuTreeToggleNavItem = new NavItem {
|
||||
Icon = "ChevronDoubleLeft",
|
||||
Name = "折叠菜单",
|
||||
AlignBottom = true,
|
||||
IsActive = false,
|
||||
Command = ToggleMenuTreePanelCommand
|
||||
}),
|
||||
new NavItem {
|
||||
Icon = "Server",
|
||||
Name = "服务器设置",
|
||||
@@ -678,6 +699,29 @@ namespace YY.Admin.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 折叠 / 展示左侧菜单树区域
|
||||
/// </summary>
|
||||
private void ToggleMenuTreePanel()
|
||||
{
|
||||
IsMenuTreePanelCollapsed = !IsMenuTreePanelCollapsed;
|
||||
if (_menuTreeToggleNavItem == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsMenuTreePanelCollapsed)
|
||||
{
|
||||
_menuTreeToggleNavItem.Name = "展示菜单";
|
||||
_menuTreeToggleNavItem.Icon = "ChevronDoubleRight";
|
||||
}
|
||||
else
|
||||
{
|
||||
_menuTreeToggleNavItem.Name = "折叠菜单";
|
||||
_menuTreeToggleNavItem.Icon = "ChevronDoubleLeft";
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenServerSettings()
|
||||
{
|
||||
_dialogService.ShowDialog("ServerSettingsDialog", r =>
|
||||
|
||||
@@ -145,12 +145,34 @@
|
||||
|
||||
<Grid x:Name="MainContentGrid">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition
|
||||
x:Name="LeftMenuTreeCol"
|
||||
Width="250"
|
||||
MinWidth="50"
|
||||
MaxWidth="{Binding ActualWidth, ElementName=MainContentGrid, Converter={StaticResource MaxWidthConverter}, ConverterParameter=50}"/>
|
||||
<ColumnDefinition Width="4"/>
|
||||
<ColumnDefinition x:Name="LeftMenuTreeCol">
|
||||
<ColumnDefinition.Style>
|
||||
<Style TargetType="ColumnDefinition">
|
||||
<Setter Property="Width" Value="250"/>
|
||||
<Setter Property="MinWidth" Value="50"/>
|
||||
<Setter Property="MaxWidth" Value="{Binding ActualWidth, ElementName=MainContentGrid, Converter={StaticResource MaxWidthConverter}, ConverterParameter=50}"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMenuTreePanelCollapsed}" Value="True">
|
||||
<Setter Property="Width" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="0"/>
|
||||
<Setter Property="MaxWidth" Value="0"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ColumnDefinition.Style>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<ColumnDefinition.Style>
|
||||
<Style TargetType="ColumnDefinition">
|
||||
<Setter Property="Width" Value="4"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMenuTreePanelCollapsed}" Value="True">
|
||||
<Setter Property="Width" Value="0"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ColumnDefinition.Style>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- Sidebar侧边栏区域 -->
|
||||
@@ -159,6 +181,16 @@
|
||||
BorderThickness="0,0,1,0"
|
||||
BorderBrush="{DynamicResource BorderBrush}"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMenuTreePanelCollapsed}" Value="True">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Border.Style>
|
||||
<ContentControl prism:RegionManager.RegionName="{x:Static consts:CommonConst.MenuRegion}"/>
|
||||
</Border>
|
||||
<!-- 拖拽分隔条 -->
|
||||
@@ -170,7 +202,18 @@
|
||||
ShowsPreview="True"
|
||||
Cursor="SizeWE"
|
||||
Background="{DynamicResource RegionBrush}"
|
||||
PreviewStyle="{StaticResource GridSplitterPreviewStyle}"/>
|
||||
PreviewStyle="{StaticResource GridSplitterPreviewStyle}">
|
||||
<GridSplitter.Style>
|
||||
<Style TargetType="GridSplitter">
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMenuTreePanelCollapsed}" Value="True">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</GridSplitter.Style>
|
||||
</GridSplitter>
|
||||
<!-- 主内容区域 -->
|
||||
<Border
|
||||
Grid.Column="2"
|
||||
|
||||
Reference in New Issue
Block a user