Files
better-genshin-impact/BetterGenshinImpact/View/Windows/FeedWindow.xaml

266 lines
17 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.
<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>