mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-06 00:06:02 +08:00
266 lines
17 KiB
XML
266 lines
17 KiB
XML
<ui:FluentWindow x:Class="BetterGenshinImpact.View.Windows.FeedWindow"
|
||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
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:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
||
Width="400"
|
||
Height="700"
|
||
MinWidth="400"
|
||
MinHeight="250"
|
||
ui:Design.Background="{DynamicResource ApplicationBackgroundBrush}"
|
||
ui:Design.Foreground="{DynamicResource TextFillColorPrimaryBrush}"
|
||
ExtendsContentIntoTitleBar="True"
|
||
FontFamily="{DynamicResource TextThemeFontFamily}"
|
||
WindowBackdropType="Mica"
|
||
WindowStartupLocation="CenterScreen"
|
||
WindowStyle="SingleBorderWindow"
|
||
mc:Ignorable="d">
|
||
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="*" />
|
||
<RowDefinition Height="Auto" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<!-- 标题栏 -->
|
||
<ui:TitleBar Name="MyTitleBar" Grid.Row="0" Title="兑换码">
|
||
<ui:TitleBar.Icon>
|
||
<ui:ImageIcon Source="pack://application:,,,/Resources/Images/logo.png" />
|
||
</ui:TitleBar.Icon>
|
||
</ui:TitleBar>
|
||
|
||
<!-- 主要内容区域 -->
|
||
<Grid Grid.Row="1" Margin="20,10,20,10">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="*" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<!-- 标题和描述 -->
|
||
<StackPanel Grid.Row="0" Margin="0,0,0,15">
|
||
<ui:TextBlock FontSize="24"
|
||
FontWeight="SemiBold"
|
||
Text="最新兑换码动态"
|
||
Margin="0,0,0,5" />
|
||
<ui:TextBlock FontSize="14"
|
||
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}"
|
||
Text="查看最新的国服原神的兑换码,一键自动兑换"
|
||
TextWrapping="Wrap" />
|
||
</StackPanel>
|
||
|
||
<!-- 加载状态 -->
|
||
<StackPanel Grid.Row="1"
|
||
VerticalAlignment="Top"
|
||
Height="16"
|
||
Orientation="Horizontal"
|
||
Margin="0,0,0,10"
|
||
Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||
<ui:ProgressRing Width="16" Height="16" IsIndeterminate="True" Margin="0,0,8,0" />
|
||
<ui:TextBlock Text="正在加载兑换码..." Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}" />
|
||
</StackPanel>
|
||
|
||
<!-- Feed 列表 -->
|
||
<ScrollViewer Grid.Row="2"
|
||
VerticalScrollBarVisibility="Auto"
|
||
HorizontalScrollBarVisibility="Disabled">
|
||
<ItemsControl ItemsSource="{Binding FeedItems}" Padding="0,0,16,0">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate>
|
||
<ui:Card Margin="0,0,0,12"
|
||
Padding="16">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="Auto" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<!-- 标题 -->
|
||
<ui:TextBlock Grid.Row="0"
|
||
FontSize="16"
|
||
FontWeight="SemiBold"
|
||
Text="{Binding Title}"
|
||
TextWrapping="Wrap"
|
||
Margin="0,0,0,8" />
|
||
|
||
<!-- 时间与有效期:同一行更紧凑(Valid 为空或 null 时隐藏) -->
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,0,6">
|
||
<ui:TextBlock FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Text="{Binding Time}" />
|
||
<ui:TextBlock FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Text=" | "
|
||
Margin="8,0,8,0">
|
||
<ui:TextBlock.Style>
|
||
<Style TargetType="{x:Type ui:TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding Valid}" Value="">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding Valid}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</ui:TextBlock.Style>
|
||
</ui:TextBlock>
|
||
<ui:TextBlock FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Text="有效期至">
|
||
<ui:TextBlock.Style>
|
||
<Style TargetType="{x:Type ui:TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding Valid}" Value="">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding Valid}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</ui:TextBlock.Style>
|
||
</ui:TextBlock>
|
||
<ui:TextBlock FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Text="{Binding Valid}"
|
||
Margin="4,0,0,0">
|
||
<ui:TextBlock.Style>
|
||
<Style TargetType="{x:Type ui:TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding Valid}" Value="">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding Valid}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</ui:TextBlock.Style>
|
||
</ui:TextBlock>
|
||
</StackPanel>
|
||
|
||
<!-- 内容:卡片式展示,增强层次与可读性 -->
|
||
<StackPanel Grid.Row="2"
|
||
Visibility="{Binding Content, Converter={StaticResource BooleanToVisibilityRevertConverter}}"
|
||
Margin="0,0,0,12">
|
||
<!--<ui:TextBlock Text="内容"
|
||
FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Margin="0,0,0,6"/>-->
|
||
<Border Background="{DynamicResource ControlFillColorDefaultBrush}"
|
||
BorderBrush="{DynamicResource ControlStrokeColorDefaultBrush}"
|
||
CornerRadius="{DynamicResource ControlCornerRadius}"
|
||
BorderThickness="1"
|
||
Padding="12">
|
||
<ui:TextBlock FontSize="14"
|
||
Text="{Binding Content}"
|
||
TextWrapping="Wrap"
|
||
LineHeight="20" />
|
||
</Border>
|
||
</StackPanel>
|
||
|
||
<!-- 兑换码列表:胶囊标签,WrapPanel自动换行 -->
|
||
<StackPanel Grid.Row="3" Margin="0,0,0,8">
|
||
<!--<ui:TextBlock Text="兑换码"
|
||
FontSize="12"
|
||
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
||
Margin="0,0,0,6"/>-->
|
||
<ItemsControl ItemsSource="{Binding Codes}">
|
||
<ItemsControl.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<WrapPanel />
|
||
</ItemsPanelTemplate>
|
||
</ItemsControl.ItemsPanel>
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate>
|
||
<Border Background="{DynamicResource ControlFillColorDefaultBrush}"
|
||
BorderBrush="{DynamicResource ControlElevationBorderBrush}"
|
||
CornerRadius="4"
|
||
BorderThickness="1"
|
||
Padding="8,4"
|
||
Margin="0,0,8,8">
|
||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||
<ui:SymbolIcon Symbol="TicketDiagonal24" Margin="0,0,6,0" />
|
||
<ui:TextBlock FontSize="14"
|
||
LineHeight="16"
|
||
FontFamily="Consolas"
|
||
Text="{Binding}"
|
||
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
|
||
</StackPanel>
|
||
</Border>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</StackPanel>
|
||
|
||
<!-- 标签 -->
|
||
<StackPanel Grid.Row="4"
|
||
Orientation="Horizontal"
|
||
Visibility="{Binding HasTag, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||
<Border CornerRadius="10"
|
||
Background="{DynamicResource CardBackground}"
|
||
BorderBrush="{DynamicResource CardBorderBrush}">
|
||
<ui:TextBlock FontSize="11"
|
||
VerticalAlignment="Center"
|
||
Foreground="White"
|
||
Text="{Binding Tag}" />
|
||
</Border>
|
||
</StackPanel>
|
||
|
||
<!-- 按钮组 -->
|
||
<StackPanel Grid.Row="5"
|
||
Orientation="Horizontal"
|
||
Margin="0,0,0,8">
|
||
<ui:Button Content="复制"
|
||
Appearance="Secondary"
|
||
FontSize="12"
|
||
Padding="12,6"
|
||
Margin="0,0,8,0"
|
||
Command="{Binding DataContext.CopyItemCodesCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||
CommandParameter="{Binding}" />
|
||
<ui:Button Content="一键兑换"
|
||
Appearance="Primary"
|
||
FontSize="12"
|
||
Padding="12,6"
|
||
Command="{Binding DataContext.AutoRedeemItemCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||
CommandParameter="{Binding}" />
|
||
</StackPanel>
|
||
|
||
|
||
</Grid>
|
||
</ui:Card>
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</ScrollViewer>
|
||
</Grid>
|
||
|
||
<!-- 底部按钮 -->
|
||
<Grid Grid.Row="2" Margin="40,10,20,20">
|
||
<StackPanel Orientation="Horizontal"
|
||
HorizontalAlignment="Right">
|
||
<ui:Button Name="BtnGetLiveCodes"
|
||
Margin="0,0,10,0"
|
||
Appearance="Secondary"
|
||
Content="实时获取前瞻兑换码"
|
||
Command="{Binding GetLiveRedeemCodesCommand}"
|
||
Visibility="{Binding IsDisplayBtnGetLiveCodes, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||
/>
|
||
<ui:Button Name="BtnClose"
|
||
Content="关闭"
|
||
Click="BtnCloseClick" />
|
||
</StackPanel>
|
||
</Grid>
|
||
</Grid>
|
||
|
||
<Window.Resources>
|
||
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
|
||
</Window.Resources>
|
||
</ui:FluentWindow> |