Files
qhmes/yy-admin-master/YY.Admin/Views/MainWindow.xaml

598 lines
40 KiB
Plaintext
Raw Normal View History

<hc:Window x:Class="YY.Admin.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:views="clr-namespace:YY.Admin.Views.Control"
xmlns:helper="clr-namespace:YY.Admin.Core.Helper;assembly=YY.Admin.Core"
xmlns:beh="clr-namespace:YY.Admin.Core.Behavior;assembly=YY.Admin.Core"
xmlns:consts="clr-namespace:YY.Admin.Core.Const;assembly=YY.Admin.Core"
xmlns:core="clr-namespace:YY.Admin.Core;assembly=YY.Admin.Core"
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:ctls="clr-namespace:YY.Admin.Core.Controls;assembly=YY.Admin.Core"
xmlns:converter="clr-namespace:YY.Admin.Core.Converter;assembly=YY.Admin.Core"
Icon="/Resources/Icon/logo.ico"
Title="{x:Static consts:CommonConst.SystemName}"
Width="1200"
Height="800"
WindowStartupLocation="CenterScreen"
WindowState="Maximized"
FontSize="{StaticResource FontSize}">
<Grid>
<DockPanel>
<!-- 顶部导航栏 -->
<Border
DockPanel.Dock="Top"
Height="60"
BorderThickness="0 0 0 1"
BorderBrush="{DynamicResource BorderBrush}"
Background="{DynamicResource RegionBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- 左侧标题 -->
<StackPanel
Orientation="Horizontal"
VerticalAlignment="Center"
Margin="20,0,0,0">
<Image
Source="/Resources/Icon/logo.png"
Width="60"
Height="60"
VerticalAlignment="Center"/>
<TextBlock
Text="{x:Static consts:CommonConst.SystemName}"
FontSize="24"
FontWeight="Bold"
VerticalAlignment="Center"
Margin="5,0,0,0"/>
</StackPanel>
<!-- 右侧用户信息 -->
<StackPanel
Grid.Column="1"
Orientation="Horizontal"
VerticalAlignment="Center"
Margin="20,0">
<!-- 服务器设置 -->
<Button BorderThickness="0" Height="60" Padding="12,0" ToolTip="服务器设置" Command="{Binding OpenServerSettingsCommand}">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center">
<ctls:FontAwesomeIcon FontSize="16" Icon="&#xf233;" Margin="0,0,0,2"/>
<TextBlock Text="服务器设置" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
<!-- 消息通知 -->
<hc:Badge
Value="100"
BadgeMargin="0,4,-10,0"
FontSize="12"
Style="{StaticResource BadgeDanger}"
Margin="10,0">
<Button BorderThickness="0" Height="60" Padding="20,0" ToolTip="消息通知">
<ctls:FontAwesomeIcon FontSize="20" Icon="&#xf0f3;"/>
</Button>
</hc:Badge>
<!-- 用户信息 -->
<StackPanel
Orientation="Horizontal"
VerticalAlignment="Center"
Margin="10,0">
<hc:Gravatar Width="40" Height="40" Style="{StaticResource GravatarCircleImg}" Source="/Resources/Icon/avatar.png"/>
<StackPanel Margin="8,0,0,0" VerticalAlignment="Center">
<TextBlock
Text="{Binding CurrentUser.RealName, FallbackValue=管理员}"
FontWeight="Bold"
FontSize="14"
Margin="0,0,0,3"/>
<TextBlock
Text="{Binding CurrentUser.AccountType, FallbackValue=Administrator}"
FontSize="12"
Foreground="{DynamicResource SecondaryTextBrush}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
</Border>
<!-- 底部版权栏 -->
<Border
DockPanel.Dock="Bottom"
Height="30"
Background="{DynamicResource RegionBrush}"
BorderThickness="0,1,0,0"
BorderBrush="{DynamicResource BorderBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- 左侧系统名称 -->
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="10,0">
<Ellipse Width="8"
Height="8"
Fill="{Binding BackendConnectionStatusBrush}"
VerticalAlignment="Center"
Margin="0,0,6,0"/>
<TextBlock Text="星数连科技科技有限公司"
VerticalAlignment="Center"
FontSize="12"
Foreground="{DynamicResource PrimaryTextBrush}"/>
</StackPanel>
<!-- 右侧版权信息 -->
<TextBlock
Grid.Column="1"
Text="Copyright © 2026 XSL All rights reserved."
VerticalAlignment="Center"
Margin="10,0"
FontSize="12"
Foreground="{DynamicResource PrimaryTextBrush}"/>
</Grid>
</Border>
<!-- Sidebar侧边栏 -->
<views:SidebarControl x:Name="LeftSidebar" DockPanel.Dock="Left" Width="80"/>
<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 Width="*"/>
</Grid.ColumnDefinitions>
<!-- Sidebar侧边栏区域 -->
<Border
x:Name="LeftMenuTree"
BorderThickness="0,0,1,0"
BorderBrush="{DynamicResource BorderBrush}"
Background="{DynamicResource RegionBrush}">
<ContentControl prism:RegionManager.RegionName="{x:Static consts:CommonConst.MenuRegion}"/>
</Border>
<!-- 拖拽分隔条 -->
<GridSplitter
Grid.Column="1"
x:Name="GridSplitter"
Width="4"
ResizeBehavior="PreviousAndNext"
ShowsPreview="True"
Cursor="SizeWE"
Background="{DynamicResource RegionBrush}"
PreviewStyle="{StaticResource GridSplitterPreviewStyle}"/>
<!-- 主内容区域 -->
<Border
Grid.Column="2"
Background="{DynamicResource RegionBrush}"
BorderBrush="{DynamicResource BorderBrush}"
BorderThickness="1,0,0,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<hc:TabControl
ItemsSource="{Binding OpenTabs}"
SelectedItem="{Binding SelectedTab, Mode=TwoWay}"
OverflowMenuDisplayMemberPath="Header"
IsAnimationEnabled="True"
IsDraggable="True"
ShowCloseButton="True"
TabItemWidth="120"
FontSize="12"
BorderThickness="0"
Background="{DynamicResource RegionBrush}"
Visibility="{Binding AppSettingsViewModel.IsTabControlVisible, Converter={StaticResource Boolean2VisibilityConverter}}"
PreviewMouseRightButtonDown="TabControl_PreviewMouseRightButtonDown">
<!-- 定义资源 -->
<hc:TabControl.Resources>
<!-- AntDesign 模板 -->
<DataTemplate x:Key="AntDesignIconTemplate">
<TextBlock
FontFamily="{StaticResource AntDesignIcon}"
FontSize="14"
Text="{Binding Icon}"
Margin="0,0,5,0"
VerticalAlignment="Center"/>
</DataTemplate>
<!-- MaterialDesign 模板 -->
<DataTemplate x:Key="MaterialDesignIconTemplate">
<md:PackIcon
Kind="{Binding Icon}"
Width="16"
Height="16"
Margin="0,0,5,0"
VerticalAlignment="Center"/>
</DataTemplate>
<!-- FontAwesome 模板 -->
<DataTemplate x:Key="FontawesomeIconTemplate">
<ctls:FontAwesomeIcon
Icon="{Binding Icon}"
FontSize="14"
Margin="0,0,5,0"
VerticalAlignment="Center"/>
</DataTemplate>
<Style x:Key="CusTabItemPlusBaseStyle" TargetType="hc:TabItem" BasedOn="{StaticResource TabItemPlusBaseStyle}">
<Setter Property="BorderThickness" Value="0,0,1,1"/>
<Setter Property="Background" Value="{DynamicResource RegionBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="hc:TabItem">
<Grid x:Name="templateRoot" SnapsToDevicePixels="true" ContextMenu="{TemplateBinding Menu}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- 外层边框 -->
<Border Grid.ColumnSpan="3" BorderThickness="{TemplateBinding BorderThickness}" x:Name="mainBorder" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Margin="0">
<Border Margin="0,0,0,-1" x:Name="innerBorder" Background="{DynamicResource RegionBrush}" Visibility="Collapsed" />
</Border>
<!-- 图标 -->
<Path x:Name="PathMain" Margin="10,0,0,0" Grid.Column="0" Width="{TemplateBinding hc:IconElement.Width}" Height="{TemplateBinding hc:IconElement.Height}" Fill="{TemplateBinding Foreground}" SnapsToDevicePixels="True" Stretch="Uniform" Data="{TemplateBinding hc:IconElement.Geometry}" />
<!-- Header 内容 -->
<ContentPresenter Grid.Column="1" x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="Stretch" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" />
<!-- 遮罩 -->
<Border Name="BorderMask" Grid.Column="1" HorizontalAlignment="Right" Width="20" Background="{TemplateBinding Background}" Margin="0,0,1,1">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="White" Offset="1" />
<GradientStop Offset="0" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<!-- 关闭按钮 -->
<Button
Grid.Column="2"
Focusable="False"
Command="{Binding CloseTabCommand}"
CommandParameter="{Binding}"
Background="Transparent"
Width="28"
Visibility="{Binding IsClosable, Converter={StaticResource Boolean2VisibilityConverter}}"
OverridesDefaultStyle="True"
Cursor="Hand">
<Button.Template>
<ControlTemplate TargetType="Button">
<!-- 使用稍大的容器保证圆形和图标居中 -->
<Grid Width="28" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="1">
<!-- 圆形 hover 背景(默认透明) -->
<Ellipse x:Name="bg"
Width="16"
Height="16"
Fill="Transparent"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Path x:Name="icon"
Style="{StaticResource ClosePathStyle}"
Width="8"
Height="8"
Fill="{DynamicResource PrimaryTextBrush}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
SnapsToDevicePixels="True"/>
</Grid>
<ControlTemplate.Triggers>
<!-- Hover显示圆形背景并加深图标颜色 -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bg" Property="Fill" Value="#E5E5E5"/>
<Setter TargetName="icon" Property="Fill" Value="#333"/>
</Trigger>
<!-- Pressed背景更深 -->
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="bg" Property="Fill" Value="#CCCCCC"/>
</Trigger>
<!-- Disabled 状态下淡化(可选) -->
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="icon" Property="Opacity" Value="0.4"/>
<Setter TargetName="bg" Property="Opacity" Value="0.4"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Panel.ZIndex" Value="1"/>
<Setter Property="Visibility" TargetName="innerBorder" Value="Visible"/>
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter"/>
<Setter Property="Background" TargetName="BorderMask" Value="{DynamicResource RegionBrush}"/>
</Trigger>
<Trigger Property="hc:IconElement.Geometry" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" TargetName="PathMain"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.4" TargetName="contentPresenter"/>
</Trigger>
<!-- Hover 效果 -->
<Trigger Property="IsMouseOver" Value="True">
<!--<Setter Property="Background" TargetName="mainBorder" Value="{DynamicResource SecondaryRegionBrush}" />-->
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</hc:TabControl.Resources>
<hc:TabControl.ItemContainerStyle>
<Style TargetType="hc:TabItem" BasedOn="{StaticResource CusTabItemPlusBaseStyle}">
<Setter Property="Menu">
<Setter.Value>
<ContextMenu MinWidth="140" Padding="3,5" Background="{DynamicResource ThirdlyRegionBrush}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="MenuItem">
<Border x:Name="Border" Background="{TemplateBinding Background}" CornerRadius="2" Padding="0,5">
<ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Border" Property="Background" Value="{DynamicResource PrimaryBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource TextIconBrush}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.4"/>
<Setter Property="Cursor" Value="No"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.ItemContainerStyle>
<MenuItem
Header="刷新页面"
Command="{Binding PlacementTarget.DataContext.RefreshTabCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem
Header="关闭当前"
Command="{Binding PlacementTarget.DataContext.CloseTabCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
IsEnabled="{Binding PlacementTarget.DataContext.IsClosable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem
Header="关闭左侧"
Command="{Binding PlacementTarget.DataContext.CloseLeftTabsCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
IsEnabled="{Binding PlacementTarget.DataContext.HasClosableLeft, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem
Header="关闭右侧"
Command="{Binding PlacementTarget.DataContext.CloseRightTabsCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
IsEnabled="{Binding PlacementTarget.DataContext.HasClosableRight, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem
Header="关闭其他"
Command="{Binding PlacementTarget.DataContext.CloseOtherTabsCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
IsEnabled="{Binding PlacementTarget.DataContext.HasClosableOther, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem
Header="关闭全部"
Command="{Binding PlacementTarget.DataContext.CloseAllTabsCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
IsEnabled="{Binding PlacementTarget.DataContext.HasClosableAny, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</hc:TabControl.ItemContainerStyle>
<hc:TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<!-- ContentControl动态选择图标模板 -->
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<!-- 默认模板AntDesign -->
<Setter Property="ContentTemplate" Value="{StaticResource AntDesignIconTemplate}" />
<!-- 绑定数据上下文 -->
<Setter Property="Content" Value="{Binding}" />
<!-- 触发器根据 IconType 切换模板 -->
<Style.Triggers>
<DataTrigger Binding="{Binding IconType}" Value="{x:Static core:IconTypeEnum.MaterialDesign}">
<Setter Property="ContentTemplate" Value="{StaticResource MaterialDesignIconTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding IconType}" Value="{x:Static core:IconTypeEnum.FontAwesome}">
<Setter Property="ContentTemplate" Value="{StaticResource FontawesomeIconTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
<!-- 文本标题 -->
<TextBlock Text="{Binding Header}" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</hc:TabControl.ItemTemplate>
<!-- 内容模板设为空因为内容在外部显示不能省略不然会显示SelectedTab类型的全路径名称 -->
<hc:TabControl.ContentTemplate>
<DataTemplate/>
</hc:TabControl.ContentTemplate>
</hc:TabControl>
<!-- 内容区域 -->
<hc:TransitioningContentControl Grid.Row="1" prism:RegionManager.RegionName="{x:Static consts:CommonConst.ContentRegion}"/>
</Grid>
</Border>
</Grid>
</DockPanel>
<hc:Drawer
IsOpen="{Binding IsAppSettingsOpen}"
Dock="Left"
ShowMask="True">
<Border
Background="{DynamicResource ThirdlyRegionBrush}"
Effect="{StaticResource EffectShadow1}"
Width="220">
<Grid>
<Grid.RowDefinitions>
<!-- 内容区域 -->
<RowDefinition Height="*"/>
<!-- 按钮区域 -->
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 可滚动的内容区域 -->
<hc:ScrollViewer
x:Name="ContentScrollViewer"
IsInertiaEnabled="True"
VerticalScrollBarVisibility="Auto"
Grid.Row="0">
<StackPanel Margin="20" x:Name="ContentPanel">
<TextBlock HorizontalAlignment="Left" Text="主题设置" FontSize="16" Style="{StaticResource TextBlockTitle}"/>
<Border BorderThickness="0,0,0,1" BorderBrush="{DynamicResource ThirdlyBorderBrush}" Margin="0,10,0,20"/>
<DockPanel LastChildFill="False" Margin="0,0,0,20">
<TextBlock Text="与系统同步" DockPanel.Dock="Left"/>
<ToggleButton
IsChecked="{Binding AppSettingsViewModel.SyncWithSystem}"
Style="{StaticResource ToggleButtonSwitch}"
hc:VisualElement.HighlightBrush="{DynamicResource PrimaryBrush}"
DockPanel.Dock="Right"/>
</DockPanel>
<WrapPanel
Orientation="Horizontal"
Button.Click="OnSkinTypeChanged"
IsEnabled="{Binding AppSettingsViewModel.IsNotSyncWithSystem}">
<Button Tag="{x:Static hc:SkinType.Default}" Style="{StaticResource ButtonCustom}" Margin="0,0,8,8" ToolTip="默认主题">
<Grid>
<Border Background="White" Width="48" Height="48" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
<ctls:FontAwesomeIcon
Icon="&#xf058;"
IconFamily="Solid"
FontSize="16"
Foreground="{DynamicResource SuccessBrush}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding AppSettingsViewModel.SkinType, Converter={StaticResource EnumToVisibilityConverter}, ConverterParameter={x:Static hc:SkinType.Default}}"/>
</Grid>
</Button>
<Button Tag="{x:Static hc:SkinType.Dark}" Style="{StaticResource ButtonCustom}" Margin="0,0,8,8" ToolTip="暗黑主题">
<Grid>
<Border Background="Black" Width="48" Height="48" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
<ctls:FontAwesomeIcon
Icon="&#xf058;"
IconFamily="Solid"
FontSize="16"
Foreground="{DynamicResource SuccessBrush}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding AppSettingsViewModel.SkinType, Converter={StaticResource EnumToVisibilityConverter}, ConverterParameter={x:Static hc:SkinType.Dark}}"/>
</Grid>
</Button>
<Button Tag="{x:Static hc:SkinType.Violet}" Style="{StaticResource ButtonCustom}" Margin="0,0,8,8" ToolTip="紫色主题">
<Grid>
<Border Background="DarkViolet" Width="48" Height="48" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
<ctls:FontAwesomeIcon
Icon="&#xf058;"
IconFamily="Solid"
FontSize="16"
Foreground="{DynamicResource SuccessBrush}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding AppSettingsViewModel.SkinType, Converter={StaticResource EnumToVisibilityConverter}, ConverterParameter={x:Static hc:SkinType.Violet}}"/>
</Grid>
</Button>
</WrapPanel>
<TextBlock HorizontalAlignment="Left" Text="布局设置" FontSize="16" Margin="0,40,0,0" Style="{StaticResource TextBlockTitle}"/>
<Border BorderThickness="0,0,0,1" BorderBrush="{DynamicResource ThirdlyBorderBrush}" Margin="0,10,0,20"/>
<DockPanel LastChildFill="False">
<TextBlock Text="显示选项卡" DockPanel.Dock="Left"/>
<ToggleButton
IsChecked="{Binding AppSettingsViewModel.IsTabControlVisible}"
Style="{StaticResource ToggleButtonSwitch}"
hc:VisualElement.HighlightBrush="{DynamicResource PrimaryBrush}"
DockPanel.Dock="Right"/>
</DockPanel>
<!-- 无滚动条时,按钮放在内容内部 -->
<Button
x:Name="InnerButton"
Grid.Row="1"
Style="{StaticResource ButtonPrimary}"
Command="{Binding ResetAppSettingsCommand}"
HorizontalAlignment="Stretch"
Margin="0,40,0,0"
Visibility="Collapsed">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<md:PackIcon Kind="Refresh" Width="18" Height="18" VerticalAlignment="Center"/>
<TextBlock Text="重置" FontSize="14" Style="{StaticResource IconButtonStyle}"/>
</StackPanel>
</Button>
</StackPanel>
</hc:ScrollViewer>
<!-- 有滚动条时,按钮固定在底部 -->
<Button
x:Name="FixedButton"
Grid.Row="1"
Style="{StaticResource ButtonPrimary}"
Command="{Binding ResetAppSettingsCommand}"
HorizontalAlignment="Stretch"
Margin="20"
Visibility="Visible">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<md:PackIcon Kind="Refresh" Width="18" Height="18" VerticalAlignment="Center"/>
<TextBlock Text="重置" FontSize="14" Style="{StaticResource IconButtonStyle}"/>
</StackPanel>
</Button>
</Grid>
</Border>
</hc:Drawer>
</Grid>
</hc:Window>