Files
Better-Seewo/Manager/Pages/TouchPage.xaml
miao-moe f219b63faf hotfix: 修复 BAML 反序列化运行时错误 (v2.0.2)
问题: 启动时报 System.Windows.Baml2006.DeferredBinaryDeserializerExtension 异常
根因: ResourceDictionary 中使用了不合法的共享资源类型

修复:
- 移除主题中 DropShadowEffect/CubicEase/QuadraticEase/Duration 共享资源
- 将所有 Effect 和 EasingFunction 改为内联声明
- 修复 DynamicResource 引用
2026-06-28 07:55:33 +00:00

544 lines
32 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>