Files
Better-Seewo/Manager/Pages/TouchPage.xaml

544 lines
32 KiB
Plaintext
Raw Normal View History

<Page x:Class="Better_Seewo.Manager.Pages.TouchPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="900"
FontFamily="Microsoft YaHei UI"
Title="触摸设置">
<!-- 页面资源字典 -->
<Page.Resources>
<!-- 自定义ToggleSwitch样式Border+Ellipse实现 -->
<Style x:Key="CustomToggleSwitch" TargetType="CheckBox">
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<Grid>
<!-- 背景轨道 -->
<Border x:Name="ToggleTrack"
Width="48" Height="26"
CornerRadius="13"
Background="#FFBDBDBD"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<ScaleTransform ScaleX="1.0" ScaleY="1.0"/>
</Border.RenderTransform>
</Border>
<!-- 圆形指示器 -->
<Border x:Name="ToggleThumb"
Width="20" Height="20"
CornerRadius="10"
Background="White"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="3,0,0,0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Border.RenderTransform>
<!-- 阴影效果 -->
<Border.Effect>
<DropShadowEffect BlurRadius="3"
ShadowDepth="1"
Opacity="0.3"
Color="Black"/>
</Border.Effect>
</Border>
</Grid>
<ControlTemplate.Triggers>
<!-- 选中状态背景变Accent色指示器滑动到右侧 -->
<Trigger Property="IsChecked" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<!-- 背景颜色渐变到AccentColor -->
<ColorAnimation Storyboard.TargetName="ToggleTrack"
Storyboard.TargetProperty="Background.Color"
To="#FF4CAF50" Duration="0:0:0.250">
<ColorAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</ColorAnimation.EasingFunction>
</ColorAnimation>
<!-- 指示器滑动到右侧 -->
<DoubleAnimation Storyboard.TargetName="ToggleThumb"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
To="22" Duration="0:0:0.250">
<DoubleAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<!-- 轨道轻微缩放反馈 -->
<DoubleAnimation Storyboard.TargetName="ToggleTrack"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.03" Duration="0:0:0.100">
<DoubleAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<!-- 背景颜色恢复灰色 -->
<ColorAnimation Storyboard.TargetName="ToggleTrack"
Storyboard.TargetProperty="Background.Color"
To="#FFBDBDBD" Duration="0:0:0.250">
<ColorAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</ColorAnimation.EasingFunction>
</ColorAnimation>
<!-- 指示器滑动回左侧 -->
<DoubleAnimation Storyboard.TargetName="ToggleThumb"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
To="0" Duration="0:0:0.250">
<DoubleAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="ToggleTrack"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.0" Duration="0:0:0.100">
<DoubleAnimation.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 设置项行样式 -->
<Style x:Key="SettingRowStyle" TargetType="Border">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Padding" Value="0,16,0,16"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource CardBackgroundBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
<!-- 自定义Slider样式 -->
<Style x:Key="CustomSlider" TargetType="Slider">
<Setter Property="Minimum" Value="0"/>
<Setter Property="Height" Value="6"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Slider">
<Grid VerticalAlignment="Center">
<!-- 轨道背景 -->
<Border Height="6" CornerRadius="3"
Background="{DynamicResource BorderBrush}"/>
<!-- 已填充部分 -->
<Border x:Name="TrackFill"
Height="6" CornerRadius="3"
Background="{DynamicResource AccentBrush}"
HorizontalAlignment="Left"
Width="{TemplateBinding Value}">
<Border.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Border.RenderTransform>
</Border>
<!-- 滑块 -->
<Border x:Name="SliderThumb"
Width="18" Height="18"
CornerRadius="9"
Background="{DynamicResource AccentBrush}"
BorderThickness="3"
BorderBrush="White"
HorizontalAlignment="Left"
VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Border.RenderTransform>
<Border.Effect>
<DropShadowEffect BlurRadius="4"
ShadowDepth="1"
Opacity="0.25"
Color="Black"/>
</Border.Effect>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 操作按钮样式 -->
<Style x:Key="SettingActionButtonStyle" TargetType="Button">
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Padding" Value="20,10"/>
<Setter Property="BorderThickness" Value="1.5"/>
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="btnBorder"
Background="Transparent"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
x:Name="contentPresenter"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="btnBorder" Property="Background"
Value="{DynamicResource AccentBrush}"/>
<Setter TargetName="contentPresenter" Property="TextBlock.Foreground"
Value="White"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<!-- 主背景 -->
<Grid Background="{DynamicResource BackgroundBrush}">
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<StackPanel Margin="40,30,40,40">
<!-- ====== 顶部标题区域 ====== -->
<StackPanel Margin="0,0,0,25">
<TextBlock Text="触摸设置"
FontSize="28"
FontWeight="Bold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="自定义触摸和笔输入行为"
FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,4,0,0"/>
</StackPanel>
<!-- ====== 设置项列表卡片 ====== -->
<Border Background="{DynamicResource CardBackgroundBrush}"
CornerRadius="12"
Padding="24"
Margin="0,0,0,20">
<!-- 设置1: 触摸输入模式 -->
<StackPanel>
<!-- ====== 设置项1触摸输入模式 ====== -->
<Border x:Name="Row1" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="触摸输入模式"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="启用或禁用触摸输入识别"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<CheckBox x:Name="ToggleTouchInput"
Grid.Column="1"
Style="{StaticResource CustomToggleSwitch}"
IsChecked="True"
VerticalAlignment="Center"
Checked="ToggleTouchInput_Changed"
Unchecked="ToggleTouchInput_Changed"/>
</Grid>
</Border>
<!-- 分隔线 -->
<Separator Background="{DynamicResource BorderBrush}"
Margin="0,0,0,0" Opacity="0.5"/>
<!-- ====== 设置项2笔压灵敏度 ====== -->
<Border x:Name="Row2" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="笔压灵敏度"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="调整书写时的压力感应灵敏度"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="0,0,0,6">
<TextBlock x:Name="PenPressureValue"
Text="50"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentBrush}"/>
</StackPanel>
<Slider x:Name="SliderPenPressure"
Minimum="0" Maximum="100"
Value="50"
IsSnapToTickEnabled="True"
TickFrequency="1"
VerticalAlignment="Center"
ValueChanged="SliderPenPressure_ValueChanged"/>
</StackPanel>
</Grid>
</Border>
<!-- 分隔线 -->
<Separator Background="{DynamicResource BorderBrush}"
Margin="0,0,0,0" Opacity="0.5"/>
<!-- ====== 设置项3忽略误触 ====== -->
<Border x:Name="Row3" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="忽略误触"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="自动过滤短暂触碰,防止误操作"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<CheckBox x:Name="ToggleIgnoreMistouch"
Grid.Column="1"
Style="{StaticResource CustomToggleSwitch}"
IsChecked="True"
VerticalAlignment="Center"/>
</Grid>
</Border>
<!-- 分隔线 -->
<Separator Background="{DynamicResource BorderBrush}"
Margin="0,0,0,0" Opacity="0.5"/>
<!-- ====== 设置项4禁用掌心拒绝 ====== -->
<Border x:Name="Row4" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="禁用掌心拒绝"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="关闭手掌接触识别(适用于特定场景)"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<CheckBox x:Name="ToggleDisablePalmReject"
Grid.Column="1"
Style="{StaticResource CustomToggleSwitch}"
IsChecked="False"
VerticalAlignment="Center"/>
</Grid>
</Border>
<!-- 分隔线 -->
<Separator Background="{DynamicResource BorderBrush}"
Margin="0,0,0,0" Opacity="0.5"/>
<!-- ====== 设置项5触摸延迟 ====== -->
<Border x:Name="Row5" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="触摸延迟"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="设置触摸输入的最小延迟时间(毫秒)"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="0,0,0,6">
<TextBlock x:Name="TouchDelayValue"
Text="50ms"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentBrush}"/>
</StackPanel>
<Slider x:Name="SliderTouchDelay"
Minimum="0" Maximum="500"
Value="50"
IsSnapToTickEnabled="True"
TickFrequency="10"
VerticalAlignment="Center"
ValueChanged="SliderTouchDelay_ValueChanged"/>
</StackPanel>
</Grid>
</Border>
<!-- 分隔线 -->
<Separator Background="{DynamicResource BorderBrush}"
Margin="0,0,0,0" Opacity="0.5"/>
<!-- ====== 设置项6双指缩放灵敏度 ====== -->
<Border x:Name="Row6" Style="{StaticResource SettingRowStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="20"/>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="双指缩放灵敏度"
FontSize="15"
FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="调整双指缩放手势的灵敏程度"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,3,0,0"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="0,0,0,6">
<TextBlock x:Name="PinchScaleValue"
Text="70"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource AccentBrush}"/>
</StackPanel>
<Slider x:Name="SliderPinchScale"
Minimum="0" Maximum="100"
Value="70"
IsSnapToTickEnabled="True"
TickFrequency="1"
VerticalAlignment="Center"
ValueChanged="SliderPinchScale_ValueChanged"/>
</StackPanel>
</Grid>
</Border>
</StackPanel>
</Border>
<!-- ====== 实时预览区域 ====== -->
<Border Background="{DynamicResource CardBackgroundBrush}"
CornerRadius="12"
Padding="20"
Margin="0,0,0,20">
<StackPanel>
<TextBlock Text="实时预览"
FontSize="15"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"
Margin="0,0,0,12"/>
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="8"
Height="80"
Padding="16">
<StackPanel VerticalAlignment="Center">
<TextBlock x:Name="PreviewText"
Text="当前配置:触摸输入 已启用 | 笔压灵敏度 50 | 触摸延迟 50ms"
FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"
TextWrapping="Wrap"/>
<!-- 笔压灵敏度可视化 -->
<Border Height="4"
CornerRadius="2"
Background="{DynamicResource BorderBrush}"
Margin="0,10,0,0"
ClipToBounds="True">
<Rectangle x:Name="PressurePreviewBar"
Fill="{DynamicResource AccentBrush}"
RadiusX="2" RadiusY="2"
Width="200" Height="4"
HorizontalAlignment="Left">
<Rectangle.RenderTransform>
<ScaleTransform ScaleX="0.5" ScaleY="1"/>
</Rectangle.RenderTransform>
</Rectangle>
</Border>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- ====== 底部操作按钮 ====== -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button x:Name="BtnRestoreDefaults"
Content="恢复默认"
Foreground="{DynamicResource TextSecondaryBrush}"
Style="{StaticResource SettingActionButtonStyle}"
Click="BtnRestoreDefaults_Click"/>
<Button x:Name="BtnApplySettings"
Content="应用设置"
Foreground="White"
Background="{DynamicResource AccentBrush}"
Style="{StaticResource SettingActionButtonStyle}"
Margin="10,0,0,0"
Click="BtnApplySettings_Click"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
</Grid>
</Page>