|
28 | 28 | <RowDefinition Height="Auto" /> |
29 | 29 | <RowDefinition Height="*" /> |
30 | 30 | <RowDefinition Height="Auto" /> |
| 31 | + <RowDefinition Height="Auto" /> |
31 | 32 | </Grid.RowDefinitions> |
32 | 33 |
|
33 | 34 | <!-- Top Header --> |
|
51 | 52 | </Button> |
52 | 53 | </StackPanel> |
53 | 54 |
|
54 | | - <Button Grid.Column="1" x:Name="btnSettings" Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Click="btnSettings_Click" Height="40" Width="40" ToolTip="管理视频目录" VerticalAlignment="Center"> |
55 | | - <materialDesign:PackIcon Kind="Settings" Height="24" Width="24" /> |
56 | | - </Button> |
| 55 | + <StackPanel Orientation="Horizontal" Grid.Column="1" VerticalAlignment="Center"> |
| 56 | + <Button Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Command="{Binding RefreshCacheCommand}" Height="40" Width="40" ToolTip="清空海报与简介缓存库 (重置识别)" Margin="0,0,10,0" Background="{DynamicResource PrimaryHueDarkBrush}" BorderBrush="Transparent"> |
| 57 | + <materialDesign:PackIcon Kind="DatabaseRefresh" Height="24" Width="24" Foreground="White" /> |
| 58 | + </Button> |
| 59 | + <Button x:Name="btnSettings" Style="{StaticResource MaterialDesignFloatingActionMiniButton}" Click="btnSettings_Click" Height="40" Width="40" ToolTip="管理视频目录"> |
| 60 | + <materialDesign:PackIcon Kind="Settings" Height="24" Width="24" /> |
| 61 | + </Button> |
| 62 | + </StackPanel> |
57 | 63 | </Grid> |
58 | 64 |
|
59 | 65 | <!-- Main DataGrid --> |
60 | | - <DataGrid Grid.Row="1" x:Name="outputGrid" Style="{StaticResource MaterialDesignDataGrid}" ItemsSource="{Binding VideoItems}" Margin="16,0,16,0" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" IsReadOnly="true" VirtualizingPanel.IsVirtualizing="True"> |
| 66 | + <DataGrid Grid.Row="1" x:Name="outputGrid" SelectedItem="{Binding SelectedVideo}" Style="{StaticResource MaterialDesignDataGrid}" ItemsSource="{Binding VideoItems}" Margin="16,0,16,16" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" IsReadOnly="true" VirtualizingPanel.IsVirtualizing="True"> |
61 | 67 | <DataGrid.CellStyle> |
62 | 68 | <Style TargetType="DataGridCell" BasedOn="{StaticResource MaterialDesignDataGridCell}"> |
63 | 69 | <Setter Property="FocusVisualStyle" Value="{x:Null}" /> |
|
70 | 76 | </Style> |
71 | 77 | </DataGrid.RowStyle> |
72 | 78 | <DataGrid.Columns> |
| 79 | + <DataGridTemplateColumn Width="85"> |
| 80 | + <DataGridTemplateColumn.CellTemplate> |
| 81 | + <DataTemplate> |
| 82 | + <StackPanel Orientation="Horizontal" Visibility="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource BooleanToVisibilityConverter}}"> |
| 83 | + <Button Style="{StaticResource MaterialDesignIconButton}" |
| 84 | + Command="{Binding DataContext.OpenMediaCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" |
| 85 | + CommandParameter="{Binding}" |
| 86 | + Width="30" Height="30" Padding="0" Margin="0,0,5,0" |
| 87 | + Foreground="{DynamicResource PrimaryHueMidBrush}" |
| 88 | + ToolTip="播放该视频"> |
| 89 | + <materialDesign:PackIcon Kind="Play" Width="20" Height="20" /> |
| 90 | + </Button> |
| 91 | + <Button Style="{StaticResource MaterialDesignIconButton}" |
| 92 | + Command="{Binding DataContext.OpenContainingFolderCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" |
| 93 | + CommandParameter="{Binding}" |
| 94 | + Width="30" Height="30" Padding="0" Margin="0" |
| 95 | + Foreground="{DynamicResource SecondaryHueMidBrush}" |
| 96 | + ToolTip="打开所在文件夹"> |
| 97 | + <materialDesign:PackIcon Kind="FolderOpen" Width="20" Height="20" /> |
| 98 | + </Button> |
| 99 | + </StackPanel> |
| 100 | + </DataTemplate> |
| 101 | + </DataGridTemplateColumn.CellTemplate> |
| 102 | + </DataGridTemplateColumn> |
73 | 103 | <DataGridTextColumn Header="编号" Binding="{Binding Id}" /> |
74 | | - <DataGridTextColumn Header="录入日期" Binding="{Binding CreationTime, StringFormat=\{0:yyyy-MM-dd HH:mm\}}" /> |
75 | 104 | <DataGridTextColumn Header="路径" Binding="{Binding FolderName}" Width="*" /> |
76 | 105 | <DataGridTextColumn Header="文件名" Binding="{Binding FileName}" Width="*" /> |
77 | 106 | </DataGrid.Columns> |
|
84 | 113 | </DataGrid.ContextMenu> |
85 | 114 | </DataGrid> |
86 | 115 |
|
| 116 | + <!-- Metadata Bottom Panel (Cinematic Glassmorphism) --> |
| 117 | + <Border Grid.Row="2" Margin="16,0,16,10" CornerRadius="8" ClipToBounds="True" Height="200" Visibility="{Binding IsMetadataVisible, Converter={StaticResource BooleanToVisibilityConverter}}"> |
| 118 | + <Grid> |
| 119 | + <!-- 1. Thematic Background (Heavily Blurred Poster) --> |
| 120 | + <Image Source="{Binding CurrentMetadata.PosterPath}" Stretch="UniformToFill" Margin="-30" RenderOptions.BitmapScalingMode="LowQuality"> |
| 121 | + <Image.Effect> |
| 122 | + <BlurEffect Radius="60" KernelType="Gaussian" /> |
| 123 | + </Image.Effect> |
| 124 | + </Image> |
| 125 | + |
| 126 | + <!-- 2. Dark Legibility Gradient Tint --> |
| 127 | + <Border> |
| 128 | + <Border.Background> |
| 129 | + <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> |
| 130 | + <GradientStop Color="#E6000000" Offset="0" /> |
| 131 | + <GradientStop Color="#C0000000" Offset="0.8" /> |
| 132 | + <GradientStop Color="#99000000" Offset="1" /> |
| 133 | + </LinearGradientBrush> |
| 134 | + </Border.Background> |
| 135 | + </Border> |
| 136 | + |
| 137 | + <!-- 3. Crisp Foreground Content --> |
| 138 | + <Grid Margin="16"> |
| 139 | + <Grid.ColumnDefinitions> |
| 140 | + <ColumnDefinition Width="115" /> |
| 141 | + <ColumnDefinition Width="*" /> |
| 142 | + </Grid.ColumnDefinitions> |
| 143 | + |
| 144 | + <Border Grid.Column="0" CornerRadius="4" ClipToBounds="True"> |
| 145 | + <Image Source="{Binding CurrentMetadata.PosterPath}" Stretch="UniformToFill" /> |
| 146 | + </Border> |
| 147 | + |
| 148 | + <StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="20,0,10,0"> |
| 149 | + <TextBlock Text="{Binding CurrentMetadata.Title}" FontSize="26" FontWeight="Bold" Foreground="White" Margin="0,0,0,6" TextWrapping="Wrap" /> |
| 150 | + <TextBlock Text="{Binding CurrentMetadata.Genre}" FontSize="13" Foreground="#B3FFFFFF" Margin="0,0,0,10" /> |
| 151 | + <TextBlock Text="{Binding CurrentMetadata.Plot}" FontSize="14" Foreground="#E6FFFFFF" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" MaxHeight="85" LineHeight="20" /> |
| 152 | + </StackPanel> |
| 153 | + </Grid> |
| 154 | + </Grid> |
| 155 | + </Border> |
| 156 | + |
87 | 157 | <!-- Status Bar --> |
88 | | - <StatusBar Grid.Row="2" Margin="0,5,0,0"> |
| 158 | + <StatusBar Grid.Row="3" Margin="0,5,0,0"> |
89 | 159 | <StatusBarItem> |
90 | 160 | <TextBlock x:Name="totalItemsText" Text="{Binding TotalItemsText}"/> |
91 | 161 | </StatusBarItem> |
|
95 | 165 | </StatusBar> |
96 | 166 |
|
97 | 167 | <!-- Loading Overlay --> |
98 | | - <Grid Grid.RowSpan="3" x:Name="LoadingOverlay" Background="#99000000" Panel.ZIndex="100" Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}"> |
| 168 | + <Grid Grid.RowSpan="4" x:Name="LoadingOverlay" Background="#99000000" Panel.ZIndex="100" Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}"> |
99 | 169 | <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> |
100 | 170 | <ProgressBar Style="{StaticResource MaterialDesignCircularProgressBar}" Value="0" IsIndeterminate="True" Width="50" Height="50" Margin="0,0,0,16" Foreground="White" /> |
101 | 171 | <TextBlock Text="正在加载文件,请稍候..." Foreground="White" FontSize="20"/> |
|
0 commit comments