问题: 启动时报 System.Windows.Baml2006.DeferredBinaryDeserializerExtension 异常 根因: ResourceDictionary 中使用了不合法的共享资源类型 修复: - 移除主题中 DropShadowEffect/CubicEase/QuadraticEase/Duration 共享资源 - 将所有 Effect 和 EasingFunction 改为内联声明 - 修复 DynamicResource 引用
483 lines
29 KiB
XML
483 lines
29 KiB
XML
<Page x:Class="Better_Seewo.Manager.Pages.InstallPage"
|
||
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>
|
||
<!-- 按钮悬停缩放动画 -->
|
||
<Style x:Key="ActionButtonStyle" TargetType="Button">
|
||
<Setter Property="Background" Value="{DynamicResource AccentBrush}"/>
|
||
<Setter Property="Foreground" Value="White"/>
|
||
<Setter Property="FontSize" Value="14"/>
|
||
<Setter Property="FontWeight" Value="Medium"/>
|
||
<Setter Property="Padding" Value="20,10"/>
|
||
<Setter Property="Margin" Value="5"/>
|
||
<Setter Property="BorderThickness" Value="0"/>
|
||
<Setter Property="Cursor" Value="Hand"/>
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="Button">
|
||
<Border x:Name="btnBorder"
|
||
Background="{TemplateBinding Background}"
|
||
CornerRadius="6"
|
||
Padding="{TemplateBinding Padding}"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<ScaleTransform ScaleX="1.0" ScaleY="1.0"/>
|
||
</Border.RenderTransform>
|
||
<ContentPresenter x:Name="contentPresenter"
|
||
HorizontalAlignment="Center"
|
||
VerticalAlignment="Center"/>
|
||
</Border>
|
||
<ControlTemplate.Triggers>
|
||
<!-- 悬停缩放动画 1.0 -> 1.05, 150ms -->
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Trigger.EnterActions>
|
||
<BeginStoryboard>
|
||
<Storyboard>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
|
||
To="1.05" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
|
||
To="1.05" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
</Storyboard>
|
||
</BeginStoryboard>
|
||
</Trigger.EnterActions>
|
||
<Trigger.ExitActions>
|
||
<BeginStoryboard>
|
||
<Storyboard>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
|
||
To="1.0" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
|
||
To="1.0" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
</Storyboard>
|
||
</BeginStoryboard>
|
||
</Trigger.ExitActions>
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
|
||
<!-- 次要按钮样式 -->
|
||
<Style x:Key="SecondaryButtonStyle" TargetType="Button">
|
||
<Setter Property="Background" Value="Transparent"/>
|
||
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}"/>
|
||
<Setter Property="FontSize" Value="14"/>
|
||
<Setter Property="FontWeight" Value="Medium"/>
|
||
<Setter Property="Padding" Value="20,10"/>
|
||
<Setter Property="Margin" Value="5"/>
|
||
<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="{TemplateBinding Background}"
|
||
BorderBrush="{TemplateBinding BorderBrush}"
|
||
BorderThickness="{TemplateBinding BorderThickness}"
|
||
CornerRadius="6"
|
||
Padding="{TemplateBinding Padding}"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<ScaleTransform ScaleX="1.0" ScaleY="1.0"/>
|
||
</Border.RenderTransform>
|
||
<ContentPresenter x:Name="contentPresenter"
|
||
HorizontalAlignment="Center"
|
||
VerticalAlignment="Center"/>
|
||
</Border>
|
||
<ControlTemplate.Triggers>
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Trigger.EnterActions>
|
||
<BeginStoryboard>
|
||
<Storyboard>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
|
||
To="1.05" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
|
||
To="1.05" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
</Storyboard>
|
||
</BeginStoryboard>
|
||
</Trigger.EnterActions>
|
||
<Trigger.ExitActions>
|
||
<BeginStoryboard>
|
||
<Storyboard>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
|
||
To="1.0" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
<DoubleAnimation Storyboard.TargetName="btnBorder"
|
||
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
|
||
To="1.0" Duration="0:0:0.150">
|
||
<DoubleAnimation.EasingFunction>
|
||
<CubicEase EasingMode="EaseOut"/>
|
||
</DoubleAnimation.EasingFunction>
|
||
</DoubleAnimation>
|
||
</Storyboard>
|
||
</BeginStoryboard>
|
||
</Trigger.ExitActions>
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
|
||
<!-- 状态卡片样式 -->
|
||
<Style x:Key="StatusCardStyle" TargetType="Border">
|
||
<Setter Property="Background" Value="{DynamicResource CardBackgroundBrush}"/>
|
||
<Setter Property="CornerRadius" Value="10"/>
|
||
<Setter Property="Padding" Value="20"/>
|
||
<Setter Property="Margin" Value="8"/>
|
||
</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="管理 Better-Seewo 插件的安装与配置"
|
||
FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,4,0,0"/>
|
||
</StackPanel>
|
||
|
||
<!-- ====== 状态检测卡片区域 (2x2 Grid) ====== -->
|
||
<Grid Margin="0,0,0,25">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="*"/>
|
||
<ColumnDefinition Width="*"/>
|
||
</Grid.ColumnDefinitions>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="Auto"/>
|
||
</Grid.RowDefinitions>
|
||
|
||
<!-- 卡片1: EN5安装状态 -->
|
||
<Border x:Name="Card1"
|
||
Grid.Column="0" Grid.Row="0"
|
||
Style="{StaticResource StatusCardStyle}"
|
||
Opacity="0"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<TranslateTransform X="0" Y="30"/>
|
||
</Border.RenderTransform>
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
|
||
<!-- 状态图标容器 -->
|
||
<Ellipse x:Name="En5StatusIcon"
|
||
Width="40" Height="40"
|
||
Margin="0,0,12,0">
|
||
<Ellipse.Fill>
|
||
<SolidColorBrush Color="Gray"/>
|
||
</Ellipse.Fill>
|
||
<!-- 绿色勾号 Path(已安装状态) -->
|
||
<Ellipse.Style>
|
||
<Style TargetType="Ellipse">
|
||
<Setter Property="Fill" Value="#FFAAAAAA"/>
|
||
</Style>
|
||
</Ellipse.Style>
|
||
</Ellipse>
|
||
<StackPanel>
|
||
<TextBlock Text="EN5 安装状态"
|
||
FontSize="16"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
<TextBlock Text="检测希沃白板5安装情况"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,2,0,0"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
<!-- 状态信息 -->
|
||
<Border Background="{DynamicResource BackgroundBrush}"
|
||
CornerRadius="6"
|
||
Padding="12">
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal">
|
||
<TextBlock Text="状态:" FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"/>
|
||
<TextBlock x:Name="En5StatusText" Text="检测中..."
|
||
FontSize="13" FontWeight="Medium"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
</StackPanel>
|
||
<StackPanel Orientation="Horizontal" Margin="0,4,0,0">
|
||
<TextBlock Text="版本:" FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"/>
|
||
<TextBlock x:Name="En5VersionText" Text="-"
|
||
FontSize="13" FontWeight="Medium"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
</StackPanel>
|
||
<TextBlock x:Name="En5PathText" Text="路径:-"
|
||
FontSize="11"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,4,0,0"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- 卡片2: 插件状态 -->
|
||
<Border x:Name="Card2"
|
||
Grid.Column="1" Grid.Row="0"
|
||
Style="{StaticResource StatusCardStyle}"
|
||
Opacity="0"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<TranslateTransform X="0" Y="30"/>
|
||
</Border.RenderTransform>
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
|
||
<Ellipse x:Name="PluginStatusIcon"
|
||
Width="40" Height="40"
|
||
Margin="0,0,12,0"/>
|
||
<StackPanel>
|
||
<TextBlock Text="插件状态"
|
||
FontSize="16"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
<TextBlock Text="检测 Better-EN5 插件安装情况"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,2,0,0"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
<Border Background="{DynamicResource BackgroundBrush}"
|
||
CornerRadius="6"
|
||
Padding="12">
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal">
|
||
<TextBlock Text="状态:" FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"/>
|
||
<TextBlock x:Name="PluginStatusText" Text="检测中..."
|
||
FontSize="13" FontWeight="Medium"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
</StackPanel>
|
||
<TextBlock x:Name="PluginPathText" Text="路径:-"
|
||
FontSize="11"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,4,0,0"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- 卡片3: 管理器状态 -->
|
||
<Border x:Name="Card3"
|
||
Grid.Column="0" Grid.Row="1"
|
||
Style="{StaticResource StatusCardStyle}"
|
||
Opacity="0"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<TranslateTransform X="0" Y="30"/>
|
||
</Border.RenderTransform>
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
|
||
<Ellipse x:Name="ManagerStatusIcon"
|
||
Width="40" Height="40"
|
||
Margin="0,0,12,0"/>
|
||
<StackPanel>
|
||
<TextBlock Text="管理器状态"
|
||
FontSize="16"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
<TextBlock Text="检测管理器程序安装情况"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,2,0,0"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
<Border Background="{DynamicResource BackgroundBrush}"
|
||
CornerRadius="6"
|
||
Padding="12">
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal">
|
||
<TextBlock Text="状态:" FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"/>
|
||
<TextBlock x:Name="ManagerStatusText" Text="检测中..."
|
||
FontSize="13" FontWeight="Medium"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
</StackPanel>
|
||
<TextBlock x:Name="ManagerPathText" Text="路径:-"
|
||
FontSize="11"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,4,0,0"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- 卡片4: 安装路径 -->
|
||
<Border x:Name="Card4"
|
||
Grid.Column="1" Grid.Row="1"
|
||
Style="{StaticResource StatusCardStyle}"
|
||
Opacity="0"
|
||
RenderTransformOrigin="0.5,0.5">
|
||
<Border.RenderTransform>
|
||
<TranslateTransform X="0" Y="30"/>
|
||
</Border.RenderTransform>
|
||
<StackPanel>
|
||
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
|
||
<Ellipse x:Name="PathStatusIcon"
|
||
Width="40" Height="40"
|
||
Margin="0,0,12,0"/>
|
||
<StackPanel>
|
||
<TextBlock Text="安装路径"
|
||
FontSize="16"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"/>
|
||
<TextBlock Text="当前检测到的EN5安装路径"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,2,0,0"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
<Border Background="{DynamicResource BackgroundBrush}"
|
||
CornerRadius="6"
|
||
Padding="12">
|
||
<StackPanel>
|
||
<TextBlock Text="EN5 路径:"
|
||
FontSize="13"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"/>
|
||
<TextBlock x:Name="InstallPathText" Text="检测中..."
|
||
FontSize="13" FontWeight="Medium"
|
||
Foreground="{DynamicResource AccentBrush}"
|
||
Margin="0,2,0,0"
|
||
TextTrimming="CharacterEllipsis"/>
|
||
<TextBlock x:Name="InstallPathValidText"
|
||
Text="路径有效性:检测中"
|
||
FontSize="11"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
Margin="0,6,0,0"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</Border>
|
||
</Grid>
|
||
|
||
<!-- ====== 操作日志区域 ====== -->
|
||
<Border Background="{DynamicResource CardBackgroundBrush}"
|
||
CornerRadius="10"
|
||
Padding="20"
|
||
Margin="8,0,8,20">
|
||
<StackPanel>
|
||
<TextBlock Text="操作日志"
|
||
FontSize="15"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"
|
||
Margin="0,0,0,10"/>
|
||
<Border Background="{DynamicResource BackgroundBrush}"
|
||
CornerRadius="6"
|
||
MaxHeight="120"
|
||
Padding="8">
|
||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||
<TextBlock x:Name="LogText"
|
||
Text="等待操作..."
|
||
FontSize="12"
|
||
Foreground="{DynamicResource TextSecondaryBrush}"
|
||
FontFamily="Consolas, Microsoft YaHei UI"/>
|
||
</ScrollViewer>
|
||
</Border>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- ====== 底部操作按钮区域 ====== -->
|
||
<Border Background="{DynamicResource CardBackgroundBrush}"
|
||
CornerRadius="10"
|
||
Padding="20">
|
||
<StackPanel>
|
||
<TextBlock Text="快捷操作"
|
||
FontSize="15"
|
||
FontWeight="SemiBold"
|
||
Foreground="{DynamicResource TextPrimaryBrush}"
|
||
Margin="0,0,0,15"/>
|
||
|
||
<!-- 第一行:安装按钮 -->
|
||
<StackPanel Orientation="Horizontal"
|
||
HorizontalAlignment="Center"
|
||
Margin="0,0,0,10">
|
||
<Button x:Name="BtnInstallPlugin"
|
||
Content="安装插件"
|
||
Style="{StaticResource ActionButtonStyle}"
|
||
Click="BtnInstallPlugin_Click"/>
|
||
<Button x:Name="BtnUninstallPlugin"
|
||
Content="卸载插件"
|
||
Style="{StaticResource SecondaryButtonStyle}"
|
||
Click="BtnUninstallPlugin_Click"/>
|
||
<Button x:Name="BtnInstallManager"
|
||
Content="安装管理器"
|
||
Style="{StaticResource ActionButtonStyle}"
|
||
Click="BtnInstallManager_Click"/>
|
||
<Button x:Name="BtnUninstallManager"
|
||
Content="卸载管理器"
|
||
Style="{StaticResource SecondaryButtonStyle}"
|
||
Click="BtnUninstallManager_Click"/>
|
||
</StackPanel>
|
||
|
||
<!-- 第二行:刷新按钮 -->
|
||
<StackPanel Orientation="Horizontal"
|
||
HorizontalAlignment="Center">
|
||
<Button x:Name="BtnRefresh"
|
||
Content="刷新状态"
|
||
Style="{StaticResource SecondaryButtonStyle}"
|
||
Click="BtnRefresh_Click"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</Grid>
|
||
</Page>
|