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.
167 lines
9.3 KiB
167 lines
9.3 KiB
<Styles |
|
xmlns="https://github.com/avaloniaui" |
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|
xmlns:controls="using:StabilityMatrix.Avalonia.Controls" |
|
xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData" |
|
xmlns:system="clr-namespace:System;assembly=System.Runtime" |
|
xmlns:ui="using:FluentAvalonia.UI.Controls" |
|
xmlns:vmInference="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Inference" |
|
xmlns:models="clr-namespace:StabilityMatrix.Avalonia.Models" |
|
x:DataType="vmInference:ImageGalleryCardViewModel"> |
|
|
|
<Design.PreviewWith> |
|
<Grid Width="600" Height="800"> |
|
<controls:ImageGalleryCard DataContext="{x:Static mocks:DesignData.ImageGalleryCardViewModel}" /> |
|
</Grid> |
|
</Design.PreviewWith> |
|
|
|
|
|
<Style Selector="ListBox /template/ VirtualizingStackPanel"> |
|
<Setter Property="Orientation" Value="Horizontal" /> |
|
</Style> |
|
|
|
<Style Selector="controls|ImageGalleryCard"> |
|
<!-- Set Defaults --> |
|
<Setter Property="Template"> |
|
<ControlTemplate> |
|
<controls:Card |
|
Padding="8" |
|
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" |
|
VerticalAlignment="{TemplateBinding VerticalAlignment}" |
|
VerticalContentAlignment="{TemplateBinding VerticalAlignment}" |
|
HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}"> |
|
|
|
<Grid RowDefinitions="*,Auto"> |
|
<!-- Main image view --> |
|
<Grid Margin="4"> |
|
<Carousel |
|
x:Name="ImageCarousel" |
|
MinHeight="400" |
|
AutoScrollToSelectedItem="True" |
|
IsVisible="{Binding !IsPreviewOverlayEnabled}" |
|
SelectedItem="{Binding SelectedImage}" |
|
SelectedIndex="{Binding SelectedImageIndex}" |
|
ItemsSource="{Binding ImageSources}"> |
|
|
|
<Carousel.PageTransition> |
|
<CompositePageTransition> |
|
<PageSlide Orientation="Horizontal" Duration="0.167"> |
|
<PageSlide.SlideInEasing> |
|
<QuadraticEaseIn /> |
|
</PageSlide.SlideInEasing> |
|
<PageSlide.SlideOutEasing> |
|
<SineEaseInOut /> |
|
</PageSlide.SlideOutEasing> |
|
</PageSlide> |
|
<CrossFade Duration="0.1" /> |
|
</CompositePageTransition> |
|
</Carousel.PageTransition> |
|
|
|
<Carousel.ItemTemplate> |
|
<DataTemplate DataType="{x:Type models:ImageSource}"> |
|
<controls:AdvancedImageBox |
|
x:Name="ImageView" |
|
CornerRadius="4" |
|
SizeMode="Fit" |
|
Image="{Binding BitmapAsync^}"> |
|
<controls:AdvancedImageBox.ContextFlyout> |
|
<ui:FAMenuFlyout> |
|
<!--<ui:MenuFlyoutItem |
|
Command="{ReflectionBinding #ImageCarousel.DataContext.FlyoutPreviewCommand}" |
|
CommandParameter="{Binding #ImageView.Image}" |
|
Text="Expanded Preview" |
|
HotKey="Space" |
|
IconSource="ZoomInFilled" /> |
|
<ui:MenuFlyoutSeparator/>--> |
|
<ui:MenuFlyoutItem |
|
IsEnabled="{OnPlatform Windows=True, Default=False}" |
|
Command="{ReflectionBinding #ImageCarousel.DataContext.FlyoutCopyCommand}" |
|
CommandParameter="{Binding #ImageView.Image}" |
|
Text="Copy" |
|
HotKey="Ctrl+C" |
|
IconSource="Copy" /> |
|
</ui:FAMenuFlyout> |
|
</controls:AdvancedImageBox.ContextFlyout> |
|
</controls:AdvancedImageBox> |
|
</DataTemplate> |
|
</Carousel.ItemTemplate> |
|
|
|
</Carousel> |
|
<Border |
|
ClipToBounds="True" |
|
CornerRadius="4" |
|
IsVisible="{Binding IsPreviewOverlayEnabled}"> |
|
<Image |
|
IsVisible="{Binding IsPreviewOverlayEnabled}" |
|
Source="{Binding PreviewImage}" |
|
Stretch="Uniform" |
|
StretchDirection="Both" /> |
|
</Border> |
|
|
|
<!-- Left button --> |
|
<Border |
|
Margin="4" |
|
VerticalAlignment="Center" |
|
HorizontalAlignment="Left" |
|
Grid.Column="0"> |
|
<Button |
|
IsEnabled="{Binding CanNavigateBack}" |
|
Classes="transparent" |
|
Padding="10,20" |
|
Command="{Binding #ImageCarousel.Previous}"> |
|
<Path Data="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" |
|
Fill="{DynamicResource ButtonForeground}" /> |
|
</Button> |
|
</Border> |
|
|
|
<!-- Right button --> |
|
<Border |
|
Margin="4" |
|
VerticalAlignment="Center" |
|
HorizontalAlignment="Right"> |
|
<Button |
|
IsEnabled="{Binding CanNavigateForward}" |
|
Classes="transparent" |
|
Padding="10,20" |
|
Command="{Binding #ImageCarousel.Next}"> |
|
<Path Data="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" |
|
Fill="{DynamicResource ButtonForeground}" /> |
|
</Button> |
|
</Border> |
|
|
|
</Grid> |
|
<!-- Thumbnails --> |
|
<ListBox |
|
Grid.Row="1" |
|
Margin="4" |
|
VerticalAlignment="Stretch" |
|
HorizontalAlignment="Center" |
|
SelectionMode="AlwaysSelected" |
|
SelectedItem="{Binding SelectedImage}" |
|
ItemsSource="{Binding ImageSources}"> |
|
<!--<ItemsRepeater.Layout> |
|
<StackLayout |
|
Orientation="Horizontal" Spacing="8" /> |
|
</ItemsRepeater.Layout>--> |
|
<!--<ItemsControl.ItemsPanel> |
|
<ItemsPanelTemplate> |
|
<StackPanel Orientation="Horizontal" /> |
|
</ItemsPanelTemplate> |
|
</ItemsControl.ItemsPanel>--> |
|
<ListBox.ItemTemplate> |
|
<DataTemplate DataType="{x:Type models:ImageSource}"> |
|
<controls:BetterAdvancedImage |
|
MaxHeight="60" |
|
CornerRadius="4" |
|
Source="{Binding}" |
|
Stretch="Uniform" |
|
StretchDirection="Both" /> |
|
</DataTemplate> |
|
</ListBox.ItemTemplate> |
|
</ListBox> |
|
</Grid> |
|
</controls:Card> |
|
</ControlTemplate> |
|
</Setter> |
|
</Style> |
|
</Styles>
|
|
|