mirror of
https://github.com/leiurayer/downkyi.git
synced 2025-03-23 15:50:12 +08:00
731 lines
41 KiB
XML
731 lines
41 KiB
XML
<UserControl
|
||
x:Class="DownKyi.Views.ViewVideoDetail"
|
||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||
xmlns:prism="http://prismlibrary.com/"
|
||
prism:ViewModelLocator.AutoWireViewModel="True">
|
||
<UserControl.Resources>
|
||
|
||
<!-- 菜单 -->
|
||
<ContextMenu x:Key="VideoContextMenu" DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
|
||
<MenuItem
|
||
Command="{Binding DataContext.ParseCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}"
|
||
CommandParameter="{Binding}"
|
||
Header="{DynamicResource Parse}" />
|
||
</ContextMenu>
|
||
|
||
<!-- ListView每个item的样式 -->
|
||
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
|
||
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
|
||
<Setter Property="ContextMenu" Value="{StaticResource VideoContextMenu}" />
|
||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushTextDark}" />
|
||
<Setter Property="BorderThickness" Value="0" />
|
||
<Setter Property="Padding" Value="0" />
|
||
<Setter Property="Margin" Value="0" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="{x:Type ListViewItem}">
|
||
<Border
|
||
x:Name="Bd"
|
||
Height="50"
|
||
Padding="{TemplateBinding Padding}"
|
||
Background="{TemplateBinding Background}"
|
||
BorderBrush="{TemplateBinding BorderBrush}"
|
||
BorderThickness="{TemplateBinding BorderThickness}"
|
||
SnapsToDevicePixels="True">
|
||
<GridViewRowPresenter
|
||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||
VerticalAlignment="Center"
|
||
Content="{TemplateBinding Content}"
|
||
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||
</Border>
|
||
|
||
<ControlTemplate.Triggers>
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource BrushPrimaryTranslucent3}" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushTextDark}" />
|
||
</Trigger>
|
||
<Trigger Property="IsSelected" Value="True">
|
||
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource BrushPrimaryTranslucent2}" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushText}" />
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
<!-- 右键菜单相关 -->
|
||
<EventSetter Event="PreviewMouseRightButtonDown" Handler="OnListViewItemPreviewMouseRightButtonDown" />
|
||
</Style>
|
||
|
||
<!-- ListView的样式 -->
|
||
<Style x:Key="ListViewStyle" TargetType="{x:Type ListView}">
|
||
<Setter Property="ScrollViewer.CanContentScroll" Value="False" />
|
||
<Setter Property="ItemContainerStyle" Value="{StaticResource ListViewItemStyle}" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="{x:Type ListView}">
|
||
<Border BorderBrush="{DynamicResource BrushBorder}" BorderThickness="1">
|
||
<ScrollViewer Padding="{TemplateBinding Padding}" Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}">
|
||
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||
</ScrollViewer>
|
||
</Border>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
|
||
<!-- ListView的header的样式 -->
|
||
<Style x:Key="GridViewColumnHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
|
||
<Setter Property="Background" Value="{DynamicResource BrushHeaderGrey}" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
|
||
<Grid SnapsToDevicePixels="True">
|
||
<Border
|
||
x:Name="HeaderBorder"
|
||
Height="30"
|
||
Background="{TemplateBinding Background}"
|
||
BorderBrush="{TemplateBinding BorderBrush}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition MaxHeight="10" />
|
||
<RowDefinition />
|
||
</Grid.RowDefinitions>
|
||
<Border Grid.RowSpan="2" Padding="{TemplateBinding Padding}">
|
||
<ContentPresenter
|
||
x:Name="HeaderContent"
|
||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||
Content="{TemplateBinding Content}"
|
||
ContentStringFormat="{TemplateBinding ContentStringFormat}"
|
||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||
RecognizesAccessKey="True"
|
||
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||
</Border>
|
||
</Grid>
|
||
</Border>
|
||
<Canvas>
|
||
<Thumb x:Name="PART_HeaderGripper">
|
||
<Thumb.Style>
|
||
<Style TargetType="{x:Type Thumb}">
|
||
<Setter Property="Canvas.Right" Value="-9" />
|
||
<Setter Property="Width" Value="18" />
|
||
<Setter Property="Height" Value="{Binding ActualHeight, RelativeSource={RelativeSource TemplatedParent}}" />
|
||
<Setter Property="Padding" Value="0" />
|
||
<Setter Property="Background" Value="White" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="{x:Type Thumb}">
|
||
<Border Padding="{TemplateBinding Padding}" Background="Transparent">
|
||
<Rectangle
|
||
Width="1"
|
||
HorizontalAlignment="Center"
|
||
Fill="{TemplateBinding Background}" />
|
||
</Border>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
</Thumb.Style>
|
||
</Thumb>
|
||
</Canvas>
|
||
</Grid>
|
||
<ControlTemplate.Triggers>
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Setter TargetName="HeaderBorder" Property="Background" Value="{DynamicResource BrushPrimaryTranslucent3}" />
|
||
<Setter TargetName="PART_HeaderGripper" Property="Background" Value="Transparent" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushTextDark}" />
|
||
</Trigger>
|
||
<Trigger Property="IsPressed" Value="True">
|
||
<Setter TargetName="HeaderBorder" Property="Background" Value="{DynamicResource BrushPrimaryTranslucent2}" />
|
||
<Setter TargetName="PART_HeaderGripper" Property="Visibility" Value="Hidden" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushText}" />
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
</UserControl.Resources>
|
||
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="50" />
|
||
<RowDefinition Height="10" />
|
||
<RowDefinition Height="*" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<Grid Grid.Row="0">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="40" />
|
||
<ColumnDefinition Width="*" />
|
||
<ColumnDefinition Width="50" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<Button
|
||
Grid.Column="0"
|
||
Width="24"
|
||
Height="24"
|
||
Margin="10,5"
|
||
VerticalAlignment="Center"
|
||
Command="{Binding BackSpaceCommand}"
|
||
Style="{StaticResource ImageBtnStyle}">
|
||
<ContentControl>
|
||
<Path
|
||
Width="{Binding ArrowBack.Width}"
|
||
Height="{Binding ArrowBack.Height}"
|
||
Data="{Binding ArrowBack.Data}"
|
||
Fill="{Binding ArrowBack.Fill}"
|
||
Stretch="None" />
|
||
</ContentControl>
|
||
</Button>
|
||
|
||
<Border
|
||
Grid.Column="1"
|
||
Height="32"
|
||
Margin="0,5,0,5"
|
||
BorderBrush="{DynamicResource BrushPrimary}"
|
||
BorderThickness="1"
|
||
CornerRadius="16">
|
||
<TextBox
|
||
Margin="16,0,30,0"
|
||
VerticalContentAlignment="Center"
|
||
BorderThickness="0"
|
||
FontSize="12"
|
||
Text="{Binding Path=InputText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
|
||
<TextBox.InputBindings>
|
||
<KeyBinding Key="Enter" Command="{Binding InputCommand}" />
|
||
</TextBox.InputBindings>
|
||
<TextBox.Resources>
|
||
<VisualBrush
|
||
x:Key="HintText"
|
||
AlignmentX="Left"
|
||
Opacity="0.5"
|
||
Stretch="None"
|
||
TileMode="None">
|
||
<VisualBrush.Visual>
|
||
<TextBlock Text="{DynamicResource IndexHintTextSimple}" />
|
||
</VisualBrush.Visual>
|
||
</VisualBrush>
|
||
</TextBox.Resources>
|
||
<TextBox.Style>
|
||
<Style TargetType="TextBox">
|
||
<Style.Triggers>
|
||
<Trigger Property="Text" Value="{x:Null}">
|
||
<Setter Property="Background" Value="{StaticResource HintText}" />
|
||
</Trigger>
|
||
<Trigger Property="Text" Value="">
|
||
<Setter Property="Background" Value="{StaticResource HintText}" />
|
||
</Trigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBox.Style>
|
||
</TextBox>
|
||
</Border>
|
||
|
||
<ContentControl
|
||
Grid.Column="1"
|
||
Width="24"
|
||
Height="24"
|
||
Margin="5"
|
||
HorizontalAlignment="Right"
|
||
VerticalAlignment="Center"
|
||
Content="{Binding Loading}"
|
||
Visibility="{Binding LoadingVisibility}" />
|
||
|
||
<Button
|
||
Grid.Column="2"
|
||
Width="24"
|
||
Height="24"
|
||
Margin="10,5"
|
||
VerticalAlignment="Center"
|
||
Command="{Binding DownloadManagerCommand}"
|
||
Style="{StaticResource ImageBtnStyle}"
|
||
ToolTip="{DynamicResource DownloadManage}">
|
||
<ContentControl>
|
||
<Path
|
||
Width="{Binding DownloadManage.Width}"
|
||
Height="{Binding DownloadManage.Height}"
|
||
Data="{Binding DownloadManage.Data}"
|
||
Fill="{Binding DownloadManage.Fill}"
|
||
Stretch="Uniform" />
|
||
</ContentControl>
|
||
</Button>
|
||
</Grid>
|
||
|
||
<TextBlock Grid.Row="1" Opacity="0.3">
|
||
<TextBlock.Background>
|
||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,0.5">
|
||
<GradientStop Offset="0" Color="#FF000000" />
|
||
<GradientStop Offset="1" />
|
||
</LinearGradientBrush>
|
||
</TextBlock.Background>
|
||
</TextBlock>
|
||
|
||
<Grid Grid.Row="2" Visibility="{Binding ContentVisibility}">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="100*" MaxHeight="180" />
|
||
<RowDefinition Height="200*" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<DockPanel Grid.Row="0" Margin="10,0">
|
||
<Image
|
||
MinWidth="150"
|
||
MaxWidth="300"
|
||
VerticalAlignment="Top"
|
||
DockPanel.Dock="Left"
|
||
Source="{Binding VideoInfoView.Cover}">
|
||
<Image.ContextMenu>
|
||
<ContextMenu>
|
||
<MenuItem Command="{Binding CopyCoverCommand}" Header="{DynamicResource CopyCover}" />
|
||
<MenuItem Command="{Binding CopyCoverUrlCommand}" Header="{DynamicResource CopyCoverUrl}" />
|
||
<!-- 复制封面到文件 -->
|
||
</ContextMenu>
|
||
</Image.ContextMenu>
|
||
</Image>
|
||
|
||
<Grid
|
||
Margin="10,0,0,0"
|
||
VerticalAlignment="Stretch"
|
||
DockPanel.Dock="Left">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="70" />
|
||
<RowDefinition />
|
||
</Grid.RowDefinitions>
|
||
|
||
<Grid Grid.Row="0">
|
||
<!-- 标题、分区、发布时间(番剧不显示)、播放量、弹幕数量、up主 -->
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition />
|
||
<ColumnDefinition Width="120" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<Grid Grid.Column="0">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="3*" />
|
||
<RowDefinition Height="2*" />
|
||
<RowDefinition Height="2*" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<TextBlock
|
||
Grid.Row="0"
|
||
HorizontalAlignment="Left"
|
||
VerticalAlignment="Center"
|
||
FontSize="16"
|
||
FontWeight="Bold"
|
||
Foreground="{DynamicResource BrushTextDark}"
|
||
Text="{Binding VideoInfoView.Title}"
|
||
TextTrimming="CharacterEllipsis"
|
||
ToolTip="{Binding VideoInfoView.Title}" />
|
||
|
||
<StackPanel
|
||
Grid.Row="1"
|
||
VerticalAlignment="Center"
|
||
Orientation="Horizontal">
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.VideoZone}" />
|
||
<TextBlock Foreground="{DynamicResource BrushTextGrey}" Text="{Binding VideoInfoView.CreateTime}" />
|
||
</StackPanel>
|
||
|
||
<StackPanel
|
||
Grid.Row="2"
|
||
VerticalAlignment="Center"
|
||
Orientation="Horizontal">
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.PlayNumber, StringFormat={}{0}播放}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.PlayNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.PlayNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.DanmakuNumber, StringFormat={}{0}弹幕}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.DanmakuNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.DanmakuNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.LikeNumber, StringFormat={}{0}点赞}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.LikeNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.LikeNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.CoinNumber, StringFormat={}{0}投币}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.CoinNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.CoinNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.FavoriteNumber, StringFormat={}{0}收藏}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.FavoriteNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.FavoriteNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.ShareNumber, StringFormat={}{0}分享}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.ShareNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.ShareNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="{DynamicResource BrushTextGrey}"
|
||
Text="{Binding VideoInfoView.ReplyNumber, StringFormat={}{0}评论}">
|
||
<TextBlock.Style>
|
||
<Style TargetType="{x:Type TextBlock}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoInfoView.ReplyNumber}" Value="0">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoInfoView.ReplyNumber}" Value="{x:Null}">
|
||
<Setter Property="Visibility" Value="Collapsed" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</TextBlock.Style>
|
||
</TextBlock>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<StackPanel
|
||
Name="nameUp"
|
||
Grid.Column="1"
|
||
Cursor="Hand"
|
||
ToolTip="{Binding VideoInfoView.UpName}">
|
||
<i:Interaction.Triggers>
|
||
<i:EventTrigger EventName="MouseLeftButtonUp">
|
||
<i:InvokeCommandAction Command="{Binding}" />
|
||
</i:EventTrigger>
|
||
</i:Interaction.Triggers>
|
||
|
||
<Image
|
||
Width="48"
|
||
Height="48"
|
||
Source="{Binding VideoInfoView.UpHeader}">
|
||
<Image.Clip>
|
||
<EllipseGeometry
|
||
Center="24,24"
|
||
RadiusX="24"
|
||
RadiusY="24" />
|
||
</Image.Clip>
|
||
</Image>
|
||
<TextBlock
|
||
Margin="0,2,0,0"
|
||
HorizontalAlignment="Center"
|
||
Foreground="{DynamicResource BrushTextDark}"
|
||
Text="{Binding VideoInfoView.UpName}"
|
||
TextTrimming="CharacterEllipsis" />
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<ScrollViewer
|
||
Grid.Row="1"
|
||
Margin="0,5,0,0"
|
||
VerticalScrollBarVisibility="Auto">
|
||
<TextBox
|
||
Background="{x:Null}"
|
||
BorderBrush="{x:Null}"
|
||
BorderThickness="0"
|
||
Foreground="{DynamicResource BrushTextDark}"
|
||
IsReadOnly="True"
|
||
Text="{Binding VideoInfoView.Description}"
|
||
TextWrapping="WrapWithOverflow" />
|
||
</ScrollViewer>
|
||
</Grid>
|
||
</DockPanel>
|
||
|
||
<Grid Grid.Row="1" Margin="10,10,10,10">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="auto" />
|
||
<RowDefinition Height="*" />
|
||
<RowDefinition Height="40" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<!-- 视频的section -->
|
||
<ListBox
|
||
x:Name="nameVideoSections"
|
||
Grid.Row="0"
|
||
ItemsSource="{Binding VideoSections, Mode=TwoWay}"
|
||
SelectionMode="Single">
|
||
<i:Interaction.Triggers>
|
||
<i:EventTrigger EventName="SelectionChanged">
|
||
<i:InvokeCommandAction Command="{Binding VideoSectionsCommand}" CommandParameter="{Binding ElementName=nameVideoSections, Path=SelectedItem}" />
|
||
</i:EventTrigger>
|
||
</i:Interaction.Triggers>
|
||
<ListBox.Style>
|
||
<Style TargetType="{x:Type ListBox}">
|
||
<Style.Triggers>
|
||
<DataTrigger Binding="{Binding VideoSections.Count}" Value="0">
|
||
<Setter Property="Height" Value="0" />
|
||
</DataTrigger>
|
||
<DataTrigger Binding="{Binding VideoSections.Count}" Value="1">
|
||
<Setter Property="Height" Value="0" />
|
||
</DataTrigger>
|
||
</Style.Triggers>
|
||
</Style>
|
||
</ListBox.Style>
|
||
<ListBox.Template>
|
||
<ControlTemplate TargetType="{x:Type ListBox}">
|
||
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled">
|
||
<WrapPanel
|
||
IsItemsHost="True"
|
||
Orientation="Horizontal"
|
||
ScrollViewer.CanContentScroll="True" />
|
||
</ScrollViewer>
|
||
</ControlTemplate>
|
||
</ListBox.Template>
|
||
<ListBox.ItemContainerStyle>
|
||
<Style TargetType="{x:Type ListBoxItem}">
|
||
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="{x:Type ListBoxItem}">
|
||
<Border
|
||
Name="Border"
|
||
Margin="5,3"
|
||
Padding="8,2"
|
||
Background="{DynamicResource BrushPrimary}"
|
||
CornerRadius="10"
|
||
Cursor="Hand">
|
||
<ContentPresenter
|
||
Name="content"
|
||
HorizontalAlignment="Center"
|
||
VerticalAlignment="Center"
|
||
Content="{Binding Title}" />
|
||
</Border>
|
||
|
||
<ControlTemplate.Triggers>
|
||
<!-- 顺序很重要,不能修改 -->
|
||
<Trigger Property="IsSelected" Value="False">
|
||
<Setter TargetName="Border" Property="Background" Value="{DynamicResource BrushBackgroundGrey}" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushText}" />
|
||
</Trigger>
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Setter TargetName="Border" Property="Background" Value="{DynamicResource BrushPrimaryTranslucent}" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushText}" />
|
||
</Trigger>
|
||
<Trigger Property="IsSelected" Value="True">
|
||
<Setter TargetName="Border" Property="Background" Value="{DynamicResource BrushPrimary}" />
|
||
<Setter Property="Foreground" Value="{DynamicResource BrushText}" />
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
</ListBox.ItemContainerStyle>
|
||
</ListBox>
|
||
|
||
<!-- 视频分P -->
|
||
<!--
|
||
数据虚拟化
|
||
VirtualizingPanel.IsVirtualizing="True"
|
||
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
|
||
VirtualizingPanel.VirtualizationMode="Recycling"
|
||
ScrollViewer.IsDeferredScrollingEnabled="True"
|
||
-->
|
||
<ListView
|
||
Name="nameVideoPages"
|
||
Grid.Row="1"
|
||
ItemsSource="{Binding ElementName=nameVideoSections, Path=SelectedItem.VideoPages}"
|
||
SelectionMode="Extended"
|
||
Style="{StaticResource ListViewStyle}"
|
||
VirtualizingPanel.IsVirtualizing="True"
|
||
VirtualizingPanel.IsVirtualizingWhenGrouping="True">
|
||
<i:Interaction.Triggers>
|
||
<i:EventTrigger EventName="SelectionChanged">
|
||
<i:InvokeCommandAction Command="{Binding VideoPagesCommand}" CommandParameter="{Binding ElementName=nameVideoPages, Path=SelectedItems}" />
|
||
</i:EventTrigger>
|
||
</i:Interaction.Triggers>
|
||
<ListView.InputBindings>
|
||
<KeyBinding
|
||
Command="{Binding KeySelectAllCommand}"
|
||
CommandParameter="{Binding ElementName=nameVideoSections, Path=SelectedItem}"
|
||
Gesture="Ctrl+A" />
|
||
</ListView.InputBindings>
|
||
<ListView.ItemsPanel>
|
||
<ItemsPanelTemplate>
|
||
<VirtualizingStackPanel />
|
||
</ItemsPanelTemplate>
|
||
</ListView.ItemsPanel>
|
||
<ListView.View>
|
||
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle}">
|
||
<GridViewColumn
|
||
Width="50"
|
||
DisplayMemberBinding="{Binding Order}"
|
||
Header="{DynamicResource Order}" />
|
||
<GridViewColumn
|
||
Width="550"
|
||
DisplayMemberBinding="{Binding Name}"
|
||
Header="{DynamicResource Name}" />
|
||
<GridViewColumn
|
||
Width="100"
|
||
DisplayMemberBinding="{Binding Duration}"
|
||
Header="{DynamicResource Duration}" />
|
||
<GridViewColumn Width="100" Header="{DynamicResource AudioQuality}">
|
||
<GridViewColumn.CellTemplate>
|
||
<DataTemplate>
|
||
<Grid>
|
||
<ComboBox ItemsSource="{Binding AudioQualityFormatList}" SelectedValue="{Binding AudioQualityFormat}" />
|
||
</Grid>
|
||
</DataTemplate>
|
||
</GridViewColumn.CellTemplate>
|
||
</GridViewColumn>
|
||
<GridViewColumn Width="120" Header="{DynamicResource VideoQuality}">
|
||
<GridViewColumn.CellTemplate>
|
||
<DataTemplate>
|
||
<Grid>
|
||
<ComboBox
|
||
DisplayMemberPath="QualityFormat"
|
||
IsSynchronizedWithCurrentItem="True"
|
||
ItemsSource="{Binding VideoQualityList, Mode=TwoWay, IsAsync=True}"
|
||
SelectedItem="{Binding VideoQuality, Mode=TwoWay}"
|
||
SelectedValuePath="Quality" />
|
||
</Grid>
|
||
</DataTemplate>
|
||
</GridViewColumn.CellTemplate>
|
||
</GridViewColumn>
|
||
<GridViewColumn Width="120" Header="{DynamicResource VideoCodec}">
|
||
<GridViewColumn.CellTemplate>
|
||
<DataTemplate>
|
||
<Grid>
|
||
<ComboBox
|
||
IsSynchronizedWithCurrentItem="True"
|
||
ItemsSource="{Binding VideoQuality.VideoCodecList, Mode=TwoWay}"
|
||
SelectedValue="{Binding VideoQuality.SelectedVideoCodec, Mode=TwoWay}" />
|
||
</Grid>
|
||
</DataTemplate>
|
||
</GridViewColumn.CellTemplate>
|
||
</GridViewColumn>
|
||
</GridView>
|
||
</ListView.View>
|
||
</ListView>
|
||
|
||
<Grid Grid.Row="2" Margin="0,10,0,0">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="60" />
|
||
<ColumnDefinition Width="80" />
|
||
<ColumnDefinition Width="140" />
|
||
<ColumnDefinition />
|
||
<ColumnDefinition Width="100" />
|
||
<ColumnDefinition Width="100" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<CheckBox
|
||
Grid.Column="0"
|
||
HorizontalAlignment="Left"
|
||
VerticalAlignment="Top"
|
||
Command="{Binding SelectAllCommand}"
|
||
CommandParameter="{Binding ElementName=nameVideoSections, Path=SelectedItem}"
|
||
Content="{DynamicResource SelectAll}"
|
||
Foreground="{DynamicResource BrushTextDark}"
|
||
IsChecked="{Binding IsSelectAll, Mode=TwoWay}"
|
||
Style="{StaticResource CheckBoxStyle}" />
|
||
<!-- 考虑将下列两个选项移入设置页面 -->
|
||
<!--<CheckBox Grid.Column="1" Content="自动解析" IsChecked="False" Foreground="{DynamicResource BrushTextDark}" Style="{StaticResource CheckBoxStyle}" Margin="0 10 0 0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
|
||
<CheckBox Grid.Column="2" Content="解析后自动下载所有" IsChecked="False" Foreground="{DynamicResource BrushTextDark}" Style="{StaticResource CheckBoxStyle}" Margin="0 10 0 0" VerticalAlignment="Top" HorizontalAlignment="Left"/>-->
|
||
|
||
<Button
|
||
Grid.Column="4"
|
||
HorizontalAlignment="Right"
|
||
VerticalAlignment="Top"
|
||
Command="{Binding ParseAllVideoCommand}"
|
||
Content="{DynamicResource ParseVideo}"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource BrushText}"
|
||
Style="{StaticResource BtnStyle}" />
|
||
<Button
|
||
Grid.Column="5"
|
||
HorizontalAlignment="Right"
|
||
VerticalAlignment="Top"
|
||
Command="{Binding AddToDownloadCommand}"
|
||
Content="{DynamicResource DownloadSelected}"
|
||
FontSize="12"
|
||
Foreground="{DynamicResource BrushText}"
|
||
Style="{StaticResource BtnStyle}" />
|
||
</Grid>
|
||
</Grid>
|
||
|
||
</Grid>
|
||
|
||
<!-- 没有数据提示 -->
|
||
<Image
|
||
Grid.Row="2"
|
||
Width="256"
|
||
Height="256"
|
||
Source="/DownKyi;component/Resources/no-data.png"
|
||
Visibility="{Binding NoDataVisibility}" />
|
||
|
||
</Grid>
|
||
</UserControl>
|