良い一日!
私はかなりの時間をかけて、自分の映画コレクションを簡単にブラウズして再生できる独自の HTPC アプリを作成しました。私は別の小さなアプリを作成しました。これはすべてのインデックスを作成し、以下に示すレイアウトの XML ファイルを準備します。
すべて正常に機能していますが、いくつかの並べ替えオプションを実装したいと思います。「S」キーを押すことで、「タイトル別」、「リリース日別」、「ジャンル別」など、いくつかの固定された並べ替え方法を繰り返したいと思います...
私の XAML はオンラインで見つけたもののマッシュアップです。残念ながら私は専門家ではなく、乱雑なコードに表示されます。基本的にはファンアートを背景として表示し、画面の下部に水平方向のスクロール ストリップがあり、そこでムービーを選択できます (選択したムービーは画面の中央に保持されます)。
どうすればこの問題を解決できますか?
<MOVIES>
<MOVIE>
<TITLE></TITLE>
<PATH></PATH>
<FANART></FANART>
<COVER></COVER>
<RELEASEDATE></RELEASEDATE>
etc...
</MOVIE>
</MOVIES>
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" WindowState="Maximized" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="350" Width="525" ShowInTaskbar="True" WindowStyle="None" Loaded="Window_Loaded">
<Window.Resources>
<XmlDataProvider x:Key="MovieData"
Source="movies.xml" />
<DataTemplate x:Key="ItemTemplate">
<Image Source="{Binding XPath=COVER}" Width="166" Height="250" Margin="0,0" MaxWidth="166" MaxHeight="250" MinWidth="166" MinHeight="250" Stretch="Fill" />
</DataTemplate>
<DataTemplate x:Key="SelectedItemTemplate">
<Border BorderBrush="WhiteSmoke" BorderThickness="3">
<Image Source="{Binding XPath=COVER}" Width="250" Height="375" Margin="0,0" MaxWidth="250" MaxHeight="375" MinWidth="250" MinHeight="375" Stretch="Fill" />
</Border>
</DataTemplate>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
</Style.Resources>
<Setter Property="FocusVisualStyle">
<Setter.Value>
<Style />
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource SelectedItemTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource MovieData}, XPath=/MOVIES/MOVIE}">
<Grid.RowDefinitions>
<RowDefinition Height="178*" />
<RowDefinition Height="133*" />
</Grid.RowDefinitions>
<Grid.Background>
<ImageBrush ImageSource="{Binding XPath=FANART}"/>
</Grid.Background>
<ListBox x:Name="Listbox1"
SelectionChanged="ScrollIntoView"
ItemContainerStyle="{StaticResource ContainerStyle}"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
HorizontalAlignment="Center" Grid.Row="1" VerticalAlignment="Bottom" KeyDown="Listbox1_KeyDown">
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}">
<Border>
<ScrollViewer x:Name="ScrollView1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" VerticalContentAlignment="Bottom" CanContentScroll="True">
<VirtualizingStackPanel x:Name="SPanel1" IsItemsHost="True" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Style>
</ListBox>
</Grid>