104 lines
5.2 KiB
XML
104 lines
5.2 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:Photos.ViewModels"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:i="using:Avalonia.Xaml.Interactivity"
|
|
xmlns:ic="using:Avalonia.Xaml.Interactions.Core"
|
|
xmlns:models="using:Photos.Models"
|
|
xmlns:anim="using:Photos.Animations"
|
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
|
x:Class="Photos.Views.MainWindow"
|
|
x:DataType="vm:MainWindowViewModel"
|
|
x:Name="Root"
|
|
Icon="/Assets/avalonia-logo.ico"
|
|
Title="Photos"
|
|
DragDrop.AllowDrop="True"
|
|
DragDrop.Drop="DropHandler"
|
|
ExtendClientAreaChromeHints="NoChrome"
|
|
TransparencyLevelHint="AcrylicBlur"
|
|
Background="Transparent"
|
|
ExtendClientAreaToDecorationsHint="True"
|
|
>
|
|
|
|
<Design.DataContext>
|
|
<!-- This only sets the DataContext for the previewer in an IDE,
|
|
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
|
|
<vm:MainWindowViewModel/>
|
|
</Design.DataContext>
|
|
|
|
<Grid ColumnDefinitions="1*, 5*" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
<Menu>
|
|
<Button Content="Open Directory" Command="{Binding OpenDirectory}"/>
|
|
</Menu>
|
|
<ScrollViewer Grid.Column="1">
|
|
<ItemsRepeater ItemsSource="{Binding Photos}"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Stretch"
|
|
Margin="5"
|
|
>
|
|
<ItemsRepeater.Layout>
|
|
<UniformGridLayout MinItemWidth="190"
|
|
MinItemHeight="240"
|
|
MinRowSpacing="12"
|
|
MinColumnSpacing="12"
|
|
>
|
|
</UniformGridLayout>
|
|
</ItemsRepeater.Layout>
|
|
|
|
<ItemsRepeater.ItemTemplate>
|
|
<DataTemplate DataType="models:Photo">
|
|
<Border BorderBrush="Black"
|
|
Background="#aa000000"
|
|
BorderThickness="1"
|
|
CornerRadius="7.5"
|
|
anim:CardHoverEffectBehavior.IsEnabled="True"
|
|
anim:CardHoverEffectBehavior.MaxRotationAngle="3.5"
|
|
anim:CardHoverEffectBehavior.ScaleFactor="1.5"
|
|
>
|
|
<StackPanel Orientation="Vertical" Margin="12">
|
|
<i:Interaction.Behaviors>
|
|
<ic:EventTriggerBehavior EventName="PointerReleased">
|
|
<ic:InvokeCommandAction Command="{Binding DataContext.PhotoClicked, ElementName=Root}" PassEventArgsToCommand="True"/>
|
|
</ic:EventTriggerBehavior>
|
|
</i:Interaction.Behaviors>
|
|
<Image Source="{Binding PreviewImage}"
|
|
Width="150"
|
|
Height="150"/>
|
|
<TextBlock Text="{Binding DisplayName}"
|
|
HorizontalAlignment="Center"
|
|
Width="150" />
|
|
<TextBlock Text="{Binding DisplayPath}" HorizontalAlignment="Center" Width="150"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</DataTemplate>
|
|
</ItemsRepeater.ItemTemplate>
|
|
</ItemsRepeater>
|
|
</ScrollViewer>
|
|
<TransitioningContentControl Grid.Column="0"
|
|
Grid.ColumnSpan="2"
|
|
Content="{Binding SelectedPhoto}">
|
|
<TransitioningContentControl.PageTransition>
|
|
<CrossFade Duration="0:0:0.18" />
|
|
</TransitioningContentControl.PageTransition>
|
|
|
|
<TransitioningContentControl.ContentTemplate>
|
|
<DataTemplate DataType="models:Photo">
|
|
<Border Background="#AA000000">
|
|
<Image Source="{Binding FullImage}"
|
|
Margin="50"
|
|
Stretch="Uniform"
|
|
>
|
|
<i:Interaction.Behaviors>
|
|
<ic:EventTriggerBehavior EventName="PointerReleased">
|
|
<ic:InvokeCommandAction Command="{Binding Path=DataContext.SelectedPhotoClicked, ElementName=Root}"/>
|
|
</ic:EventTriggerBehavior>
|
|
</i:Interaction.Behaviors>
|
|
</Image>
|
|
</Border>
|
|
</DataTemplate>
|
|
</TransitioningContentControl.ContentTemplate>
|
|
</TransitioningContentControl>
|
|
</Grid>
|
|
</Window>
|