Files
LanMountainDesktop/LanMountainDesktop.Launcher/Views/OobeWindow.axaml

919 lines
43 KiB
XML

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:LanMountainDesktop.Launcher.Views"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:fi="using:FluentIcons.Avalonia"
xmlns:res="clr-namespace:LanMountainDesktop.Launcher.Resources"
mc:Ignorable="d"
d:DesignWidth="850"
d:DesignHeight="650"
x:Class="LanMountainDesktop.Launcher.Views.OobeWindow"
x:DataType="views:OobeWindow"
x:CompileBindings="False"
Title="{x:Static res:Strings.Oobe_Title}"
Width="850"
Height="650"
CanResize="False"
WindowStartupLocation="CenterScreen"
Background="{DynamicResource SolidBackgroundFillColorBaseBrush}"
TransparencyLevelHint="None"
Icon="/Assets/logo.ico">
<Design.DataContext>
<views:OobeWindow />
</Design.DataContext>
<Grid x:Name="ContentGrid">
<!-- 步骤 1: 打字机动画开场 -->
<Grid x:Name="TypingStep" Margin="60,80,60,60">
<!-- 主标题区域(左上角) -->
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Spacing="16">
<!-- 打字机文本区域 -->
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="TypingTextBlock"
FontSize="28"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}"
FontFamily="Consolas, Monaco, 'Courier New', monospace" />
<Border x:Name="CursorBorder"
Width="3"
Height="28"
Background="{DynamicResource TextFillColorPrimaryBrush}"
VerticalAlignment="Bottom"
Margin="4,0,0,4">
<Border.Styles>
<Style Selector="Border">
<Style.Animations>
<Animation Duration="0:0:0.8" IterationCount="INFINITE">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="50%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="51%">
<Setter Property="Opacity" Value="0" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</Border.Styles>
</Border>
</StackPanel>
<!-- 副标题区域(流光渐变动画 + 打字机效果) -->
<StackPanel x:Name="SubtitlePanel" Opacity="0" IsVisible="False" Spacing="4">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="NextGenTextBlock"
FontSize="48"
FontWeight="Bold"
FontFamily="Consolas, Monaco, 'Courier New', monospace">
<TextBlock.Foreground>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,100%">
<GradientStop Offset="0.0" Color="#0078D4" />
<GradientStop Offset="0.33" Color="#7B68EE" />
<GradientStop Offset="0.66" Color="#FF8C00" />
<GradientStop Offset="1.0" Color="#107C10" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock> <Border x:Name="SubtitleCursorBorder"
Width="4"
Height="48"
Background="{DynamicResource TextFillColorPrimaryBrush}"
VerticalAlignment="Bottom"
Margin="4,0,0,4"
IsVisible="False">
<Border.Styles>
<Style Selector="Border">
<Style.Animations>
<Animation Duration="0:0:0.8" IterationCount="INFINITE">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="50%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="51%">
<Setter Property="Opacity" Value="0" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</Border.Styles>
</Border>
</StackPanel>
<TextBlock x:Name="DashboardTextBlock"
FontSize="48"
FontWeight="Bold"
FontFamily="Consolas, Monaco, 'Courier New', monospace"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
</StackPanel>
</StackPanel>
<!-- 按钮动画区域(左下角) -->
<Grid x:Name="ButtonAnimationArea"
Width="280"
Height="80"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Margin="0,0,0,40"
IsVisible="False">
<!-- 方框边框(由鼠标画出) -->
<Border x:Name="DrawnBorder"
Width="160"
Height="56"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Background="Transparent"
BorderBrush="{DynamicResource AccentFillColorDefaultBrush}"
BorderThickness="0"
CornerRadius="{DynamicResource DesignCornerRadiusMd}">
</Border>
<!-- 开始按钮(从方框中弹出) -->
<Button x:Name="StartButton"
Width="160"
Height="56"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Theme="{DynamicResource AccentButtonTheme}"
Opacity="0"
IsVisible="False"
RenderTransformOrigin="0.5,0.5">
<Button.RenderTransform>
<ScaleTransform ScaleX="0.1" ScaleY="0.1" />
</Button.RenderTransform>
<TextBlock Text="{x:Static res:Strings.Oobe_ButtonGetStarted}"
FontSize="16"
FontWeight="SemiBold" />
</Button>
<!-- 鼠标光标 -->
<Canvas x:Name="MouseCursor"
Width="24"
Height="24"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="-50,-50,0,0"
IsVisible="False">
<Path Data="M0,0 L0,18 L4,14 L7,20 L10,19 L7,13 L12,13 Z"
Fill="{DynamicResource TextFillColorPrimaryBrush}"
Stroke="{DynamicResource SolidBackgroundFillColorBaseBrush}"
StrokeThickness="1" />
</Canvas>
</Grid>
</Grid>
<!-- 步骤 2: 主题选择页面 -->
<Grid x:Name="ThemeStep" Margin="48" RowDefinitions="Auto,*,Auto" IsVisible="False">
<StackPanel Grid.Row="0" Spacing="8" Margin="0,0,0,24">
<TextBlock Text="{x:Static res:Strings.Oobe_AppearanceTitle}"
FontSize="24"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_AppearanceDesc}"
FontSize="13"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="20">
<!-- 浅色/深色模式选择 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<StackPanel Spacing="12">
<TextBlock Text="{x:Static res:Strings.Oobe_AppearanceMode}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<Grid ColumnDefinitions="*,*" ColumnSpacing="12">
<Border x:Name="LightModeOption"
Grid.Column="0"
Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="2"
BorderBrush="{DynamicResource AccentFillColorDefaultBrush}"
Padding="16"
Cursor="Hand">
<StackPanel Spacing="8" HorizontalAlignment="Center">
<Border Width="48"
Height="48"
Background="#F3F3F3"
CornerRadius="8"
BorderBrush="#E0E0E0"
BorderThickness="1">
<fi:SymbolIcon Symbol="WeatherSunny"
FontSize="24"
Foreground="#5F5F5F"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<TextBlock Text="{x:Static res:Strings.Oobe_LightMode}"
FontSize="13"
HorizontalAlignment="Center"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<RadioButton x:Name="LightModeRadio"
GroupName="ThemeMode"
IsChecked="True"
HorizontalAlignment="Center" />
</StackPanel>
</Border>
<Border x:Name="DarkModeOption"
Grid.Column="1"
Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="1"
BorderBrush="{DynamicResource CardStrokeColorDefaultBrush}"
Padding="16"
Cursor="Hand">
<StackPanel Spacing="8" HorizontalAlignment="Center">
<Border Width="48"
Height="48"
Background="#1E1E1E"
CornerRadius="8"
BorderBrush="#333333"
BorderThickness="1">
<fi:SymbolIcon Symbol="WeatherMoon"
FontSize="24"
Foreground="#E0E0E0"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<TextBlock Text="{x:Static res:Strings.Oobe_DarkMode}"
FontSize="13"
HorizontalAlignment="Center"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<RadioButton x:Name="DarkModeRadio"
GroupName="ThemeMode"
HorizontalAlignment="Center" />
</StackPanel>
</Border>
</Grid>
</StackPanel>
</Border>
<!-- 主题色选择 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<StackPanel Spacing="12">
<TextBlock Text="{x:Static res:Strings.Oobe_ThemeColor}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<WrapPanel x:Name="AccentColorPanel" HorizontalAlignment="Left">
<!-- 预设颜色 -->
<Border x:Name="BlueColor"
Width="40"
Height="40"
Background="#0078D4"
CornerRadius="20"
BorderThickness="3"
BorderBrush="{DynamicResource AccentFillColorDefaultBrush}"
Margin="0,0,12,12"
Cursor="Hand">
<Border.Styles>
<Style Selector="Border:pointerover">
<Setter Property="RenderTransform" Value="scale(1.1)" />
</Style>
</Border.Styles>
</Border>
<Border x:Name="PurpleColor"
Width="40"
Height="40"
Background="#7B68EE"
CornerRadius="20"
BorderThickness="0"
Margin="0,0,12,12"
Cursor="Hand" />
<Border x:Name="GreenColor"
Width="40"
Height="40"
Background="#107C10"
CornerRadius="20"
BorderThickness="0"
Margin="0,0,12,12"
Cursor="Hand" />
<Border x:Name="OrangeColor"
Width="40"
Height="40"
Background="#D83B01"
CornerRadius="20"
BorderThickness="0"
Margin="0,0,12,12"
Cursor="Hand" />
<Border x:Name="PinkColor"
Width="40"
Height="40"
Background="#E3008C"
CornerRadius="20"
BorderThickness="0"
Margin="0,0,12,12"
Cursor="Hand" />
<Border x:Name="TealColor"
Width="40"
Height="40"
Background="#008080"
CornerRadius="20"
BorderThickness="0"
Margin="0,0,12,12"
Cursor="Hand" />
</WrapPanel>
</StackPanel>
</Border>
<!-- 莫奈取色来源 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<StackPanel Spacing="12">
<TextBlock Text="{x:Static res:Strings.Oobe_MonetSource}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_MonetDesc}"
FontSize="12"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<StackPanel Spacing="8">
<Border x:Name="MonetFromWallpaperOption"
Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="2"
BorderBrush="{DynamicResource AccentFillColorDefaultBrush}"
Padding="12"
Cursor="Hand">
<Grid ColumnDefinitions="Auto,*">
<RadioButton x:Name="MonetFromWallpaperRadio"
Grid.Column="0"
GroupName="MonetSource"
IsChecked="True"
VerticalAlignment="Center"
Margin="0,0,12,0" />
<StackPanel Grid.Column="1" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_MonetFromWallpaper}"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_MonetFromWallpaperDesc}"
FontSize="11"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
</Grid>
</Border>
<Border x:Name="MonetFromCustomOption"
Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="1"
BorderBrush="{DynamicResource CardStrokeColorDefaultBrush}"
Padding="12"
Cursor="Hand">
<Grid ColumnDefinitions="Auto,*">
<RadioButton x:Name="MonetFromCustomRadio"
Grid.Column="0"
GroupName="MonetSource"
VerticalAlignment="Center"
Margin="0,0,12,0" />
<StackPanel Grid.Column="1" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_MonetFromCustomImage}"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_MonetFromCustomImageDesc}"
FontSize="11"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
</Grid>
</Border>
<Border x:Name="MonetDisabledOption"
Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="1"
BorderBrush="{DynamicResource CardStrokeColorDefaultBrush}"
Padding="12"
Cursor="Hand">
<Grid ColumnDefinitions="Auto,*">
<RadioButton x:Name="MonetDisabledRadio"
Grid.Column="0"
GroupName="MonetSource"
VerticalAlignment="Center"
Margin="0,0,12,0" />
<StackPanel Grid.Column="1" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_MonetDisabled}"
FontSize="13"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_MonetDisabledDesc}"
FontSize="11"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
</Grid>
</Border>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="12"
Margin="0,24,0,0">
<Button x:Name="ThemeBackButton"
Content="{x:Static res:Strings.Oobe_ButtonBack}"
Theme="{DynamicResource ButtonTheme}" />
<Button x:Name="ThemeNextButton"
Content="{x:Static res:Strings.Oobe_ButtonNext}"
Theme="{DynamicResource AccentButtonTheme}" />
</StackPanel>
</Grid>
<!-- 步骤 3: 数据位置选择页面 -->
<Grid x:Name="DataLocationStep" Margin="48" RowDefinitions="Auto,*,Auto" IsVisible="False">
<StackPanel Grid.Row="0" Spacing="8" Margin="0,0,0,32">
<TextBlock Text="{x:Static res:Strings.Oobe_DataLocationTitle}"
FontSize="28"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_DataLocationDesc}"
FontSize="14"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<StackPanel Grid.Row="1" Spacing="20">
<Border x:Name="AdminWarningBanner"
Background="{DynamicResource SystemFillColorCriticalBackgroundBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16,12"
IsVisible="False">
<StackPanel Spacing="6">
<StackPanel Orientation="Horizontal" Spacing="8">
<fi:SymbolIcon Symbol="ShieldError"
FontSize="20"
Foreground="{DynamicResource SystemFillColorCriticalBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_NotWritable}"
FontWeight="SemiBold"
FontSize="14"
Foreground="{DynamicResource SystemFillColorCriticalBrush}" />
</StackPanel>
<TextBlock Text="{x:Static res:Strings.Oobe_NotWritableDesc}"
FontSize="13"
TextWrapping="Wrap"
Foreground="{DynamicResource SystemFillColorCriticalBrush}" />
</StackPanel>
</Border>
<!-- 系统用户目录选项 -->
<Border x:Name="SystemOptionBorder"
Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="2"
BorderBrush="{DynamicResource AccentFillColorDefaultBrush}"
Padding="20,18"
Cursor="Hand">
<Grid ColumnDefinitions="Auto,*">
<RadioButton x:Name="SystemRadio"
Grid.Column="0"
VerticalAlignment="Center"
Margin="0,0,16,0"
GroupName="DataLocation"
IsChecked="True" />
<StackPanel Grid.Column="1" Spacing="8">
<StackPanel Orientation="Horizontal" Spacing="8">
<fi:SymbolIcon Symbol="Folder"
FontSize="24"
Foreground="{DynamicResource AccentFillColorDefaultBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_SystemProfile}"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
</StackPanel>
<TextBlock Text="{x:Static res:Strings.Oobe_SystemProfileDesc}"
FontSize="13"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<Border Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusSm}"
Padding="12,8"
Margin="0,4,0,0">
<TextBlock x:Name="SystemPathText"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorTertiaryBrush}"
FontFamily="Consolas, Monaco, monospace" />
</Border>
</StackPanel>
</Grid>
</Border>
<!-- 便携模式选项 -->
<Border x:Name="PortableOptionBorder"
Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
BorderThickness="1"
BorderBrush="{DynamicResource CardStrokeColorDefaultBrush}"
Padding="20,18"
Cursor="Hand">
<Grid ColumnDefinitions="Auto,*">
<RadioButton x:Name="PortableRadio"
Grid.Column="0"
VerticalAlignment="Center"
Margin="0,0,16,0"
GroupName="DataLocation"
IsEnabled="False" />
<StackPanel Grid.Column="1" Spacing="8">
<StackPanel Orientation="Horizontal" Spacing="8">
<fi:SymbolIcon Symbol="Save"
FontSize="24"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_Portable}"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
</StackPanel>
<TextBlock Text="{x:Static res:Strings.Oobe_PortableDesc}"
FontSize="13"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<Border Background="{DynamicResource SolidBackgroundFillColorQuarternaryBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusSm}"
Padding="12,8"
Margin="0,4,0,0">
<TextBlock x:Name="PortablePathText"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorTertiaryBrush}"
FontFamily="Consolas, Monaco, monospace" />
</Border>
</StackPanel>
</Grid>
</Border>
<!-- 数据迁移提示 -->
<Border x:Name="MigrationInfoBorder"
Background="{DynamicResource SystemFillColorSuccessBackgroundBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16,12"
IsVisible="False">
<StackPanel Orientation="Horizontal" Spacing="8">
<fi:SymbolIcon Symbol="Checkmark"
FontSize="20"
Foreground="{DynamicResource SystemFillColorSuccessBrush}" />
<TextBlock x:Name="MigrationInfoText"
FontSize="13"
TextWrapping="Wrap"
Foreground="{DynamicResource SystemFillColorSuccessBrush}" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="12"
Margin="0,32,0,0">
<Button x:Name="DataLocationBackButton"
Content="{x:Static res:Strings.Oobe_ButtonBack}"
Theme="{DynamicResource ButtonTheme}"
Width="100"
Height="36" />
<Button x:Name="DataLocationNextButton"
Content="{x:Static res:Strings.Oobe_ButtonNext}"
Theme="{DynamicResource AccentButtonTheme}"
Width="100"
Height="36" />
</StackPanel>
</Grid>
<!-- 步骤 4: 启动与展示(紧接数据保存位置) -->
<Grid x:Name="StartupPresentationStep" Margin="48" RowDefinitions="Auto,*,Auto" IsVisible="False">
<StackPanel Grid.Row="0" Spacing="8" Margin="0,0,0,16">
<TextBlock Text="{x:Static res:Strings.Oobe_StartupTitle}"
FontSize="24"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_StartupDesc}"
FontSize="13"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="14">
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_ShowInTaskbar}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_ShowInTaskbarDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="OobeShowInTaskbarToggle"
Grid.Column="1"
VerticalAlignment="Center" />
</Grid>
</Border>
<Border x:Name="OobeSlideTransitionSection"
Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<StackPanel Spacing="12">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_SlideTransition}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_SlideTransitionDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="OobeSlideTransitionToggle"
Grid.Column="1"
VerticalAlignment="Center" />
</Grid>
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_FadeTransition}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_FadeTransitionDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="OobeFadeTransitionToggle"
Grid.Column="1"
VerticalAlignment="Center" />
</Grid>
</StackPanel>
</Border>
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="8">
<fi:SymbolIcon Symbol="SlideLayout"
FontSize="20"
Foreground="{DynamicResource AccentFillColorDefaultBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_FusedDesktop}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
</StackPanel>
<TextBlock Text="{x:Static res:Strings.Oobe_FusedDesktopDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="OobeFusedPopupToggle"
Grid.Column="1"
VerticalAlignment="Center" />
</Grid>
</Border>
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_AutoStart}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock x:Name="OobeAutoStartDescriptionText"
Text="{x:Static res:Strings.Oobe_AutoStartDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="OobeAutoStartToggle"
Grid.Column="1"
VerticalAlignment="Center" />
</Grid>
</Border>
</StackPanel>
</ScrollViewer>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="12"
Margin="0,24,0,0">
<Button x:Name="StartupPresentationBackButton"
Content="{x:Static res:Strings.Oobe_ButtonBack}"
Theme="{DynamicResource ButtonTheme}" />
<Button x:Name="StartupPresentationNextButton"
Content="{x:Static res:Strings.Oobe_ButtonNext}"
Theme="{DynamicResource AccentButtonTheme}" />
</StackPanel>
</Grid>
<!-- 步骤 5: 信息与隐私页面 -->
<Grid x:Name="PrivacyStep" Margin="48" RowDefinitions="Auto,*,Auto" IsVisible="False">
<StackPanel Grid.Row="0" Spacing="8" Margin="0,0,0,24">
<TextBlock Text="{x:Static res:Strings.Oobe_PrivacyTitle}"
FontSize="24"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_PrivacyDesc}"
FontSize="13"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<StackPanel Grid.Row="1" Spacing="16">
<!-- 崩溃报告 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_CrashReports}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_CrashReportsDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="CrashTelemetryToggle"
Grid.Column="1"
IsChecked="False"
IsEnabled="False"
VerticalAlignment="Center" />
</Grid>
</Border>
<!-- 使用统计 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<Grid ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" Spacing="4">
<TextBlock Text="{x:Static res:Strings.Oobe_UsageStats}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_UsageStatsDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
<ToggleSwitch x:Name="UsageTelemetryToggle"
Grid.Column="1"
IsChecked="False"
IsEnabled="False"
VerticalAlignment="Center" />
</Grid>
</Border>
<!-- 隐私追踪 ID -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16">
<StackPanel Spacing="8">
<TextBlock Text="{x:Static res:Strings.Oobe_PrivacyTrackingId}"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<TextBlock Text="{x:Static res:Strings.Oobe_PrivacyTrackingIdDesc}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
<TextBox x:Name="TelemetryIdTextBox"
Text=""
IsReadOnly="True"
FontFamily="Consolas, Monaco, monospace"
FontSize="12"
HorizontalAlignment="Stretch" />
</StackPanel>
</Border>
<!-- 隐私协议同意区域 -->
<Border Background="{DynamicResource CardBackgroundFillColorDefaultBrush}"
CornerRadius="{DynamicResource DesignCornerRadiusMd}"
Padding="16"
Margin="0,8,0,0">
<StackPanel Spacing="12">
<!-- 复选框和协议文本 -->
<StackPanel Orientation="Horizontal" Spacing="8">
<CheckBox x:Name="PrivacyAgreementCheckBox"
VerticalAlignment="Center" />
<StackPanel Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<TextBlock Text="{x:Static res:Strings.Oobe_Agree}"
FontSize="13"
VerticalAlignment="Center"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
<Button x:Name="ViewPrivacyPolicyButton"
Content="{x:Static res:Strings.Oobe_PrivacyPolicyLink}"
Background="Transparent"
BorderThickness="0"
Padding="0"
FontSize="13"
Foreground="{DynamicResource SystemAccentColor}">
<Button.Styles>
<Style Selector="Button:pointerover /template/ ContentPresenter">
<Setter Property="TextBlock.Foreground" Value="{DynamicResource SystemAccentColorDark1}" />
</Style>
</Button.Styles>
</Button>
</StackPanel>
</StackPanel>
<!-- 提示文本 -->
<TextBlock Text="{x:Static res:Strings.Oobe_PrivacyAgreementNote}"
FontSize="12"
TextWrapping="Wrap"
Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Right"
Spacing="12"
Margin="0,24,0,0">
<Button x:Name="PrivacyBackButton"
Content="{x:Static res:Strings.Oobe_ButtonBack}"
Theme="{DynamicResource ButtonTheme}" />
<Button x:Name="PrivacyNextButton"
Content="{x:Static res:Strings.Oobe_ButtonNext}"
Theme="{DynamicResource AccentButtonTheme}" />
</StackPanel>
</Grid>
<!-- 步骤 6: 欢迎完成页面 -->
<Grid x:Name="WelcomeStep" Margin="48" RowDefinitions="*,Auto" IsVisible="False">
<StackPanel Grid.Row="0"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Spacing="32">
<Border Width="96"
Height="96"
Background="{DynamicResource SystemFillColorSuccessBackgroundBrush}"
CornerRadius="48"
HorizontalAlignment="Center">
<PathIcon Data="M9,16.17 L4.83,12 L3.41,13.41 L9,19 L21,7 L19.59,5.59 Z"
Width="48"
Height="48"
Foreground="{DynamicResource SystemFillColorSuccessBrush}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<StackPanel Spacing="12" HorizontalAlignment="Center">
<TextBlock Text="{x:Static res:Strings.Oobe_CompleteTitle}"
FontSize="32"
FontWeight="SemiBold"
Foreground="{DynamicResource TextFillColorPrimaryBrush}"
HorizontalAlignment="Center" />
<TextBlock Text="{x:Static res:Strings.Oobe_CompleteSubtitle}"
FontSize="16"
Foreground="{DynamicResource TextFillColorSecondaryBrush}"
HorizontalAlignment="Center" />
</StackPanel>
</StackPanel>
<Button Grid.Row="1"
x:Name="EnterButton"
HorizontalAlignment="Center"
Width="56"
Height="56"
Margin="0,0,0,24"
Theme="{DynamicResource AccentButtonTheme}"
CornerRadius="28">
<fi:SymbolIcon Symbol="ArrowRight"
FontSize="24"
Foreground="{DynamicResource TextFillColorPrimaryBrush}"/>
</Button>
</Grid>
</Grid>
</Window>