You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
7.6 KiB
137 lines
7.6 KiB
<?xml version="1.0" encoding="utf-8" ?>
|
|
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
|
xmlns:model="clr-namespace:ex_DataTemplateSelector.Model"
|
|
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
|
xmlns:local="clr-namespace:ex_DataTemplateSelector"
|
|
x:Class="ex_DataTemplateSelector.MainPage">
|
|
<ContentPage.Resources>
|
|
<ResourceDictionary>
|
|
<Style TargetType="Frame">
|
|
<Setter Property="WidthRequest" Value="60"/>
|
|
<Setter Property="HeightRequest" Value="60"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="Margin" Value="0"/>
|
|
<Setter Property="IsClippedToBounds" Value="True"/>
|
|
<Setter Property="BorderColor" Value="Transparent"/>
|
|
<Setter Property="HasShadow" Value="False" />
|
|
</Style>
|
|
<Style TargetType="Label">
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="FontFamily" Value="SF Pro Text Regular"/>
|
|
</Style>
|
|
<Style TargetType="ImageButton">
|
|
<Setter Property="MinimumWidthRequest" Value="14"/>
|
|
<Setter Property="WidthRequest" Value="14"/>
|
|
<Setter Property="MinimumHeightRequest" Value="14"/>
|
|
<Setter Property="HeightRequest" Value="14"/>
|
|
<Setter Property="VerticalOptions" Value="Center"/>
|
|
</Style>
|
|
<Style TargetType="Image">
|
|
<Setter Property="HeightRequest" Value="60"/>
|
|
<Setter Property="WidthRequest" Value="60"/>
|
|
<Setter Property="Aspect" Value="AspectFill"/>
|
|
</Style>
|
|
<DataTemplate x:Key="albumDataTemplate" x:DataType="model:Album">
|
|
<ViewCell>
|
|
<Grid ColumnDefinitions="Auto, *, Auto" RowDefinitions="*,*"
|
|
Margin="14, 8" ColumnSpacing="10">
|
|
<Frame Grid.RowSpan="2" CornerRadius="10">
|
|
<Image Source="{Binding Image}"/>
|
|
</Frame>
|
|
<Label Text="{Binding Title}" TextColor="Black"
|
|
Grid.Column="1" VerticalOptions="End"/>
|
|
<Label Text="{Binding Artist.FullName, StringFormat=Album ⋅ \{0\}}" TextColor="Gray"
|
|
Grid.Column="1" Grid.Row="1"
|
|
VerticalOptions="Start"/>
|
|
<ImageButton Source="chevron_right"
|
|
Grid.Column="2" Grid.RowSpan="2">
|
|
<ImageButton.Behaviors>
|
|
<toolkit:IconTintColorBehavior
|
|
TintColor="{StaticResource Gray400}"/>
|
|
</ImageButton.Behaviors>
|
|
</ImageButton>
|
|
</Grid>
|
|
</ViewCell>
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="playlistDataTemplate" x:DataType="model:Playlist">
|
|
<ViewCell>
|
|
<Grid ColumnDefinitions="Auto, *, Auto" RowDefinitions="*,*"
|
|
Margin="14, 8" ColumnSpacing="10">
|
|
<Frame Grid.RowSpan="2" CornerRadius="10">
|
|
<Image Source="{Binding Image}"/>
|
|
</Frame>
|
|
<Label Text="{Binding Title}" TextColor="Black"
|
|
Grid.Column="1" VerticalOptions="End"/>
|
|
<Label Text="{Binding Owner, StringFormat=Playlist ⋅ \{0\}}" TextColor="Gray"
|
|
Grid.Column="1" Grid.Row="1"
|
|
VerticalOptions="Start"/>
|
|
<ImageButton Source="chevron_right" Grid.Column="2"
|
|
Grid.RowSpan="2">
|
|
<ImageButton.Behaviors>
|
|
<toolkit:IconTintColorBehavior
|
|
TintColor="{StaticResource Gray400}"/>
|
|
</ImageButton.Behaviors>
|
|
</ImageButton>
|
|
</Grid>
|
|
</ViewCell>
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="trackDataTemplate" x:DataType="model:Track">
|
|
<ViewCell>
|
|
<Grid ColumnDefinitions="Auto, *, Auto" RowDefinitions="*,*"
|
|
Margin="14, 8" ColumnSpacing="10">
|
|
<Frame Grid.RowSpan="2" CornerRadius="10">
|
|
<Image Source="{Binding Album.Image}"/>
|
|
</Frame>
|
|
<Label Text="{Binding Title}" TextColor="Black"
|
|
Grid.Column="1" VerticalOptions="End"/>
|
|
<Label Text="{Binding Album.Artist.FullName, StringFormat=Morceau ⋅ \{0\}}" TextColor="Gray"
|
|
Grid.Column="1" Grid.Row="1"
|
|
VerticalOptions="Start"/>
|
|
<ImageButton Source="ellipsis" Grid.Column="2"
|
|
HorizontalOptions="Start" Margin="0, 0, 0, 4"
|
|
Grid.RowSpan="2">
|
|
<ImageButton.Behaviors>
|
|
<toolkit:IconTintColorBehavior
|
|
TintColor="{StaticResource Black}"/>
|
|
</ImageButton.Behaviors>
|
|
</ImageButton>
|
|
</Grid>
|
|
</ViewCell>
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="artistDataTemplate" x:DataType="model:Artist">
|
|
<ViewCell>
|
|
<Grid ColumnDefinitions="Auto, *, Auto" RowDefinitions="*,*"
|
|
Margin="14, 8" ColumnSpacing="10">
|
|
<Frame Grid.RowSpan="2" CornerRadius="30">
|
|
<Image Source="{Binding Picture}"/>
|
|
</Frame>
|
|
<Label Text="{Binding FullName}" TextColor="Black"
|
|
Grid.Column="1" VerticalOptions="End"/>
|
|
<Label Text="Artiste" TextColor="Gray"
|
|
Grid.Column="1" Grid.Row="1"
|
|
VerticalOptions="Start"/>
|
|
<ImageButton Source="chevron_right" Grid.Column="2"
|
|
Grid.RowSpan="2">
|
|
<ImageButton.Behaviors>
|
|
<toolkit:IconTintColorBehavior
|
|
TintColor="{StaticResource Gray400}"/>
|
|
</ImageButton.Behaviors>
|
|
</ImageButton>
|
|
</Grid>
|
|
</ViewCell>
|
|
</DataTemplate>
|
|
<local:ResultSelector AlbumTemplate="{StaticResource albumDataTemplate}"
|
|
PlaylistTemplate="{StaticResource playlistDataTemplate}"
|
|
TrackTemplate="{StaticResource trackDataTemplate}"
|
|
ArtistTemplate="{StaticResource artistDataTemplate}"
|
|
x:Key="resultSelector"/>
|
|
</ResourceDictionary>
|
|
</ContentPage.Resources>
|
|
|
|
<ListView ItemsSource="{Binding Results}"
|
|
ItemTemplate="{StaticResource resultSelector}"
|
|
RowHeight="76" BackgroundColor="White"/>
|
|
|
|
</ContentPage>
|