TransitioningContentControlPage.axaml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <UserControl xmlns="https://github.com/avaloniaui"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:vm="using:ControlCatalog.ViewModels"
  6. xmlns:converter="using:ControlCatalog.Converter"
  7. xmlns:system="using:System"
  8. mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
  9. x:DataType="vm:TransitioningContentControlPageViewModel"
  10. x:Class="ControlCatalog.Pages.TransitioningContentControlPage">
  11. <UserControl.DataContext>
  12. <vm:TransitioningContentControlPageViewModel />
  13. </UserControl.DataContext>
  14. <UserControl.Styles>
  15. <Style Selector="HeaderedContentControl">
  16. <Setter Property="Template">
  17. <Setter.Value>
  18. <ControlTemplate>
  19. <Grid>
  20. <Grid.ColumnDefinitions>
  21. <ColumnDefinition Width="Auto" SharedSizeGroup="HeaderCol" />
  22. <ColumnDefinition Width="*" />
  23. </Grid.ColumnDefinitions>
  24. <ContentPresenter Content="{TemplateBinding Header}"
  25. Grid.Column="0"
  26. VerticalAlignment="Center" />
  27. <ContentPresenter Content="{TemplateBinding Content}"
  28. Grid.Column="1"
  29. VerticalAlignment="Center" />
  30. </Grid>
  31. </ControlTemplate>
  32. </Setter.Value>
  33. </Setter>
  34. </Style>
  35. </UserControl.Styles>
  36. <UserControl.Resources>
  37. <converter:MathSubtractConverter x:Key="MathSubtractConverter" />
  38. <system:Double x:Key="TopMargin">8</system:Double>
  39. </UserControl.Resources>
  40. <DockPanel LastChildFill="True"
  41. Height="{Binding Path=Bounds.Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Converter={StaticResource MathSubtractConverter},ConverterParameter={StaticResource TopMargin}}">
  42. <TextBlock DockPanel.Dock="Top" Classes="h2">The TransitioningContentControl control allows you to show a page transition whenever the Content changes.</TextBlock>
  43. <ExperimentalAcrylicBorder DockPanel.Dock="Bottom" Margin="10" CornerRadius="5" >
  44. <ExperimentalAcrylicBorder.Material>
  45. <ExperimentalAcrylicMaterial BackgroundSource="Digger" TintColor="White" />
  46. </ExperimentalAcrylicBorder.Material>
  47. <StackPanel Margin="5" Spacing="5" Grid.IsSharedSizeScope="True">
  48. <HeaderedContentControl Header="Select a transition">
  49. <ComboBox ItemsSource="{Binding PageTransitions}" SelectedItem="{Binding SelectedTransition}" />
  50. </HeaderedContentControl>
  51. <HeaderedContentControl Header="Duration">
  52. <NumericUpDown Value="{Binding Duration}" Increment="250" Minimum="100" />
  53. </HeaderedContentControl>
  54. <HeaderedContentControl Header="Clip to Bounds">
  55. <ToggleSwitch IsChecked="{Binding ClipToBounds}" />
  56. </HeaderedContentControl>
  57. </StackPanel>
  58. </ExperimentalAcrylicBorder>
  59. <Button DockPanel.Dock="Left" Command="{Binding PrevImage}" Content="&lt;" />
  60. <Button DockPanel.Dock="Right" Command="{Binding NextImage}" Content=">" />
  61. <Border ClipToBounds="{Binding ClipToBounds}" Margin="5">
  62. <TransitioningContentControl Content="{Binding SelectedImage}"
  63. PageTransition="{Binding SelectedTransition.Transition}" >
  64. <TransitioningContentControl.ContentTemplate>
  65. <DataTemplate DataType="Bitmap">
  66. <Image Source="{Binding}" />
  67. </DataTemplate>
  68. </TransitioningContentControl.ContentTemplate>
  69. </TransitioningContentControl>
  70. </Border>
  71. </DockPanel>
  72. </UserControl>