improve:UI

快捷键设置UI改进
This commit is contained in:
2026-04-05 22:03:16 +08:00
parent bcbece5bd6
commit 057fb35d00
4 changed files with 418 additions and 255 deletions
+28 -24
View File
@@ -3,63 +3,67 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf" xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="60" d:DesignWidth="600"> d:DesignHeight="60"
d:DesignWidth="600">
<Border Background="White" <Border Background="#2d2d30"
BorderBrush="#E0E0E0" BorderBrush="#3f3f46"
BorderThickness="1" BorderThickness="1"
CornerRadius="5" CornerRadius="6"
Margin="0,2"> Margin="0,2"
<Grid Margin="15,10"> SnapsToDevicePixels="True">
<Grid Margin="14,10">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!-- 左侧信息 -->
<ikw:SimpleStackPanel Grid.Column="0" VerticalAlignment="Center"> <ikw:SimpleStackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock x:Name="TitleTextBlock" <TextBlock x:Name="TitleTextBlock"
Text="快捷键标题" Text="快捷键标题"
FontSize="14" FontSize="14"
FontWeight="SemiBold" FontWeight="SemiBold"
Foreground="#333333"/> Foreground="#fafafa" />
<TextBlock x:Name="DescriptionTextBlock" <TextBlock x:Name="DescriptionTextBlock"
Text="快捷键描述" Text="快捷键描述"
FontSize="12" FontSize="12"
Foreground="#666666" Foreground="#a1a1aa"
Margin="0,2,0,0"/> Margin="0,2,0,0"
TextWrapping="Wrap" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
<!-- 当前快捷键显示 -->
<Border Grid.Column="1" <Border Grid.Column="1"
Background="#F5F5F5" Background="#3f3f46"
BorderBrush="#D0D0D0" BorderBrush="#71717a"
BorderThickness="1" BorderThickness="1"
CornerRadius="3" CornerRadius="4"
Margin="10,0,0,0" Margin="10,0,0,0"
Padding="8,4"> Padding="10,6"
VerticalAlignment="Center">
<TextBlock x:Name="CurrentHotkeyTextBlock" <TextBlock x:Name="CurrentHotkeyTextBlock"
Text="未设置" Text="未设置"
FontSize="12" FontSize="12"
Foreground="#666666" FontFamily="Consolas"
MinWidth="80" FontWeight="SemiBold"
TextAlignment="Center"/> Foreground="#fafafa"
MinWidth="88"
TextAlignment="Center"
VerticalAlignment="Center" />
</Border> </Border>
<!-- 设置按钮 -->
<Button x:Name="BtnSetHotkey" <Button x:Name="BtnSetHotkey"
Grid.Column="2" Grid.Column="2"
Content="设置" Content="设置"
Width="60" Width="72"
Height="28" Height="30"
Background="#0066BF"
Foreground="White"
FontSize="12" FontSize="12"
Margin="10,0,0,0" Margin="10,0,0,0"
VerticalAlignment="Center"
Style="{DynamicResource PrimaryButtonStyle}"
Padding="12,4"
Click="BtnSetHotkey_Click" /> Click="BtnSetHotkey_Click" />
</Grid> </Grid>
</Border> </Border>
+13 -3
View File
@@ -11,6 +11,16 @@ namespace Ink_Canvas.Windows
/// </summary> /// </summary>
public partial class HotkeyItem : UserControl public partial class HotkeyItem : UserControl
{ {
private static readonly SolidColorBrush HotkeyValueForeground = CreateFrozenBrush(0xFA, 0xFA, 0xFA);
private static readonly SolidColorBrush HotkeyPlaceholderForeground = CreateFrozenBrush(0xA1, 0xA1, 0xAA);
private static SolidColorBrush CreateFrozenBrush(byte r, byte g, byte b)
{
var brush = new SolidColorBrush(Color.FromRgb(r, g, b));
brush.Freeze();
return brush;
}
#region Events #region Events
/// <summary> /// <summary>
/// 快捷键变更事件 /// 快捷键变更事件
@@ -80,13 +90,13 @@ namespace Ink_Canvas.Windows
if (_currentKey == Key.None) if (_currentKey == Key.None)
{ {
CurrentHotkeyTextBlock.Text = "未设置"; CurrentHotkeyTextBlock.Text = "未设置";
CurrentHotkeyTextBlock.Foreground = Brushes.Gray; CurrentHotkeyTextBlock.Foreground = HotkeyPlaceholderForeground;
} }
else else
{ {
var modifiersText = _currentModifiers == ModifierKeys.None ? "" : $"{_currentModifiers}+"; var modifiersText = _currentModifiers == ModifierKeys.None ? "" : $"{_currentModifiers}+";
CurrentHotkeyTextBlock.Text = $"{modifiersText}{_currentKey}"; CurrentHotkeyTextBlock.Text = $"{modifiersText}{_currentKey}";
CurrentHotkeyTextBlock.Foreground = Brushes.Black; CurrentHotkeyTextBlock.Foreground = HotkeyValueForeground;
} }
} }
@@ -106,7 +116,7 @@ namespace Ink_Canvas.Windows
private void StopHotkeyCapture() private void StopHotkeyCapture()
{ {
BtnSetHotkey.Content = "设置"; BtnSetHotkey.Content = "设置";
BtnSetHotkey.Background = Brushes.DodgerBlue; BtnSetHotkey.ClearValue(Button.BackgroundProperty);
// 移除键盘事件处理器 // 移除键盘事件处理器
KeyDown -= HotkeyItem_KeyDown; KeyDown -= HotkeyItem_KeyDown;
+221 -67
View File
@@ -6,16 +6,87 @@
xmlns:local="clr-namespace:Ink_Canvas.Windows" xmlns:local="clr-namespace:Ink_Canvas.Windows"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf" xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
ui:ThemeManager.RequestedTheme="Light"
Background="#F9F9F9"
AllowsTransparency="True"
mc:Ignorable="d" mc:Ignorable="d"
WindowStyle="None"
WindowStartupLocation="CenterScreen"
ResizeMode="CanResize"
Title="快捷键设置" Title="快捷键设置"
Height="600" Height="600"
Width="800"> Width="800"
WindowStartupLocation="CenterScreen"
ResizeMode="CanResize"
FontFamily="Microsoft YaHei UI"
ui:ThemeManager.IsThemeAware="True"
ui:TitleBar.ExtendViewIntoTitleBar="True"
ui:WindowHelper.SystemBackdropType="Mica"
ui:WindowHelper.UseModernWindowStyle="True"
ui:TitleBar.Height="48">
<Window.Resources>
<ResourceDictionary>
<SolidColorBrush x:Key="WindowBackground" Color="#1e1e1e" />
<SolidColorBrush x:Key="BorderBrush" Color="#3f3f46" />
<SolidColorBrush x:Key="TextForeground" Color="#fafafa" />
<SolidColorBrush x:Key="TextSecondary" Color="#a1a1aa" />
<SolidColorBrush x:Key="AccentColor" Color="#3b82f6" />
<SolidColorBrush x:Key="TitleForeground" Color="#fafafa" />
<Style x:Key="PrimaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{StaticResource AccentColor}" />
<Setter Property="Foreground" Value="White" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Padding" Value="16,8" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}"
CornerRadius="4"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#2563eb" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#1d4ed8" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SecondaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource TextForeground}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Padding" Value="16,8" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="4"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#27272a" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Window.Resources>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@@ -24,61 +95,98 @@
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- 标题栏 --> <!-- 标题栏(与云存储管理等新设置窗口一致) -->
<Border Grid.Row="0" Background="#3B82F6" Height="60" <Border x:Name="Border_TitleBarRoot"
Grid.Row="0"
Height="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=(ui:TitleBar.Height)}"
MouseLeftButtonDown="TitleBar_MouseLeftButtonDown"> MouseLeftButtonDown="TitleBar_MouseLeftButtonDown">
<Grid> <Grid>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="20,0,0,0"> <Grid.ColumnDefinitions>
<TextBlock Text="快捷键设置" <ColumnDefinition />
Foreground="White" <ColumnDefinition Width="Auto" />
FontSize="22" <ColumnDefinition Width="Auto" />
FontWeight="SemiBold" </Grid.ColumnDefinitions>
VerticalAlignment="Center"/>
</StackPanel> <TextBlock Grid.Column="0"
<Button x:Name="BtnClose" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=Title}"
Content="&#xE8BB;"
FontFamily="Segoe MDL2 Assets"
HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Margin="0,0,20,0" Margin="12,0,0,0"
Background="Transparent" FontSize="12"
BorderThickness="0" FontWeight="SemiBold"
FontSize="16" Foreground="{StaticResource TitleForeground}" />
Foreground="White"
Click="BtnClose_Click"/> <ikw:SimpleStackPanel x:Name="StackPanel_RightButtons"
Grid.Column="1"
Orientation="Horizontal"
Spacing="5"
VerticalAlignment="Center" />
<Rectangle Grid.Column="2"
Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=(ui:TitleBar.SystemOverlayRightInset)}" />
</Grid> </Grid>
</Border> </Border>
<!-- 主内容 --> <!-- 主内容 -->
<ScrollViewer Grid.Row="1" Margin="20" VerticalScrollBarVisibility="Auto"> <Border Grid.Row="1"
<ikw:SimpleStackPanel Margin="20"> Background="{StaticResource WindowBackground}"
<!-- 说明文字 --> Padding="20,10,20,16">
<ui:ScrollViewerEx VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
PanningMode="VerticalOnly"
ui:ThemeManager.RequestedTheme="Dark">
<ikw:SimpleStackPanel Spacing="14">
<TextBlock Text="在这里可以自定义全局快捷键设置。全局快捷键在任何情况下都能生效,即使应用程序不在焦点状态。" <TextBlock Text="在这里可以自定义全局快捷键设置。全局快捷键在任何情况下都能生效,即使应用程序不在焦点状态。"
TextWrapping="Wrap" TextWrapping="Wrap"
Margin="0,0,0,20" Foreground="{StaticResource TextSecondary}"
Foreground="#666666"/> FontSize="14"
LineHeight="20" />
<!-- 鼠标模式快捷键设置 --> <Border BorderThickness="1"
<GroupBox Header="鼠标模式设置" Margin="0,0,0,20"> BorderBrush="{StaticResource BorderBrush}"
<ikw:SimpleStackPanel> CornerRadius="8"
Padding="18,16"
Background="#27272a">
<ikw:SimpleStackPanel Spacing="10">
<TextBlock Text="鼠标模式"
FontSize="18"
FontWeight="SemiBold"
Foreground="{StaticResource TextForeground}" />
<Border Height="1"
Background="{StaticResource BorderBrush}"
HorizontalAlignment="Stretch" />
<ikw:SimpleStackPanel Orientation="Horizontal" VerticalAlignment="Center"> <ikw:SimpleStackPanel Orientation="Horizontal" VerticalAlignment="Center">
<ui:ToggleSwitch x:Name="ToggleSwitchEnableHotkeysInMouseMode" <ui:ToggleSwitch x:Name="ToggleSwitchEnableHotkeysInMouseMode"
Header="在鼠标模式下启用快捷键" Header="在鼠标模式下启用快捷键"
OnContent=""
OffContent=""
FontFamily="Microsoft YaHei UI"
FontWeight="Bold"
Margin="0,0,10,0" Margin="0,0,10,0"
Width="200"/> Width="220" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
<TextBlock Text="开启后,即使在鼠标模式下快捷键也会生效" <TextBlock Text="开启后,即使在鼠标模式下快捷键也会生效"
Foreground="#666666" Foreground="{StaticResource TextSecondary}"
VerticalAlignment="Center" TextWrapping="Wrap"
TextWrapping="Wrap"/> FontSize="13" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</GroupBox> </Border>
<!-- 快捷键列表 --> <ikw:SimpleStackPanel x:Name="HotkeyList" Spacing="12">
<ikw:SimpleStackPanel x:Name="HotkeyList" Margin="0,0,0,20">
<!-- 基本操作 --> <!-- 基本操作 -->
<GroupBox Header="基本操作" Margin="0,0,0,15"> <Border BorderThickness="1"
<ikw:SimpleStackPanel> BorderBrush="{StaticResource BorderBrush}"
CornerRadius="8"
Padding="18,16"
Background="#27272a">
<ikw:SimpleStackPanel Spacing="10">
<TextBlock Text="基本操作"
FontSize="18"
FontWeight="SemiBold"
Foreground="{StaticResource TextForeground}" />
<Border Height="1"
Background="{StaticResource BorderBrush}"
HorizontalAlignment="Stretch" />
<ikw:SimpleStackPanel Spacing="4">
<local:HotkeyItem x:Name="UndoHotkey" <local:HotkeyItem x:Name="UndoHotkey"
Title="撤销" Title="撤销"
Description="撤销上一步操作" Description="撤销上一步操作"
@@ -100,11 +208,24 @@
DefaultKey="V" DefaultKey="V"
DefaultModifiers="Control" /> DefaultModifiers="Control" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</GroupBox> </ikw:SimpleStackPanel>
</Border>
<!-- 工具切换 --> <!-- 工具切换 -->
<GroupBox Header="工具切换" Margin="0,0,0,15"> <Border BorderThickness="1"
<ikw:SimpleStackPanel> BorderBrush="{StaticResource BorderBrush}"
CornerRadius="8"
Padding="18,16"
Background="#27272a">
<ikw:SimpleStackPanel Spacing="10">
<TextBlock Text="工具切换"
FontSize="18"
FontWeight="SemiBold"
Foreground="{StaticResource TextForeground}" />
<Border Height="1"
Background="{StaticResource BorderBrush}"
HorizontalAlignment="Stretch" />
<ikw:SimpleStackPanel Spacing="4">
<local:HotkeyItem x:Name="SelectToolHotkey" <local:HotkeyItem x:Name="SelectToolHotkey"
Title="选择工具" Title="选择工具"
Description="切换到选择工具" Description="切换到选择工具"
@@ -131,11 +252,24 @@
DefaultKey="Q" DefaultKey="Q"
DefaultModifiers="Alt" /> DefaultModifiers="Alt" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</GroupBox> </ikw:SimpleStackPanel>
</Border>
<!-- 画笔设置 --> <!-- 画笔设置 -->
<GroupBox Header="画笔设置" Margin="0,0,0,15"> <Border BorderThickness="1"
<ikw:SimpleStackPanel> BorderBrush="{StaticResource BorderBrush}"
CornerRadius="8"
Padding="18,16"
Background="#27272a">
<ikw:SimpleStackPanel Spacing="10">
<TextBlock Text="画笔设置"
FontSize="18"
FontWeight="SemiBold"
Foreground="{StaticResource TextForeground}" />
<Border Height="1"
Background="{StaticResource BorderBrush}"
HorizontalAlignment="Stretch" />
<ikw:SimpleStackPanel Spacing="4">
<local:HotkeyItem x:Name="Pen1Hotkey" <local:HotkeyItem x:Name="Pen1Hotkey"
Title="画笔1" Title="画笔1"
Description="选择画笔1" Description="选择画笔1"
@@ -162,11 +296,24 @@
DefaultKey="D5" DefaultKey="D5"
DefaultModifiers="Alt" /> DefaultModifiers="Alt" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</GroupBox> </ikw:SimpleStackPanel>
</Border>
<!-- 功能快捷键 --> <!-- 功能快捷键 -->
<GroupBox Header="功能快捷键" Margin="0,0,0,15"> <Border BorderThickness="1"
<ikw:SimpleStackPanel> BorderBrush="{StaticResource BorderBrush}"
CornerRadius="8"
Padding="18,16"
Background="#27272a">
<ikw:SimpleStackPanel Spacing="10">
<TextBlock Text="功能快捷键"
FontSize="18"
FontWeight="SemiBold"
Foreground="{StaticResource TextForeground}" />
<Border Height="1"
Background="{StaticResource BorderBrush}"
HorizontalAlignment="Stretch" />
<ikw:SimpleStackPanel Spacing="4">
<local:HotkeyItem x:Name="DrawLineHotkey" <local:HotkeyItem x:Name="DrawLineHotkey"
Title="绘制直线" Title="绘制直线"
Description="绘制直线工具" Description="绘制直线工具"
@@ -193,29 +340,36 @@
DefaultKey="Escape" DefaultKey="Escape"
DefaultModifiers="None" /> DefaultModifiers="None" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</GroupBox> </ikw:SimpleStackPanel>
</ikw:SimpleStackPanel></ikw:SimpleStackPanel> </Border>
</ScrollViewer> </ikw:SimpleStackPanel>
</ikw:SimpleStackPanel>
</ui:ScrollViewerEx>
</Border>
<!-- 底部操作栏 --> <!-- 底部操作栏 -->
<Border Grid.Row="2" Background="#F0F0F0" Height="60"> <Border Grid.Row="2"
<Grid> Background="#18181b"
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,20,0"> BorderBrush="{StaticResource BorderBrush}"
BorderThickness="0,1,0,0"
Padding="16,12">
<ikw:SimpleStackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Spacing="10">
<Button x:Name="BtnResetToDefault" <Button x:Name="BtnResetToDefault"
Content="重置为默认" Content="重置为默认"
Width="100" MinWidth="100"
Height="35" Height="36"
Margin="0,0,10,0" Style="{StaticResource SecondaryButtonStyle}"
Click="BtnResetToDefault_Click" /> Click="BtnResetToDefault_Click" />
<Button x:Name="BtnSave" <Button x:Name="BtnSave"
Content="保存设置" Content="保存设置"
Width="100" MinWidth="100"
Height="35" Height="36"
Background="#3B82F6" Style="{StaticResource PrimaryButtonStyle}"
Foreground="White"
Click="BtnSave_Click" /> Click="BtnSave_Click" />
</ikw:SimpleStackPanel> </ikw:SimpleStackPanel>
</Grid>
</Border> </Border>
</Grid> </Grid>
</Window> </Window>
@@ -541,11 +541,6 @@ namespace Ink_Canvas.Windows
#endregion #endregion
#region Event Handlers #region Event Handlers
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
Close();
}
/// <summary> /// <summary>
/// 标题栏拖拽事件 /// 标题栏拖拽事件
/// </summary> /// </summary>