FlyoutsPage.axaml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  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. mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="700"
  6. x:Class="ControlCatalog.Pages.FlyoutsPage">
  7. <UserControl.Resources>
  8. <MenuFlyout x:Key="SharedMenuFlyout">
  9. <MenuItem Header="Item 1">
  10. <MenuItem Header="Subitem 1" />
  11. <MenuItem Header="Subitem 2" />
  12. <MenuItem Header="Subitem 3" />
  13. </MenuItem>
  14. <MenuItem Header="Item 2" InputGesture="Ctrl+A" />
  15. <MenuItem Header="Item 3" />
  16. </MenuFlyout>
  17. <Flyout Placement="Bottom" x:Key="BasicFlyout">
  18. <Flyout.FlyoutPresenterTheme>
  19. <ControlTheme TargetType="FlyoutPresenter" BasedOn="{StaticResource {x:Type FlyoutPresenter}}">
  20. <Setter Property="CornerRadius" Value="20" />
  21. </ControlTheme>
  22. </Flyout.FlyoutPresenterTheme>
  23. <Panel Width="100" Height="100">
  24. <TextBlock Text="Flyout Content with a custom presenter theme!" TextWrapping="Wrap" />
  25. </Panel>
  26. </Flyout>
  27. </UserControl.Resources>
  28. <ScrollViewer HorizontalScrollBarVisibility="Disabled">
  29. <StackPanel Spacing="10">
  30. <TextBlock FontSize="18" Text="Button with a Flyout" />
  31. <StackPanel>
  32. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  33. BorderThickness="1" Padding="15">
  34. <Button Content="Click Me!" Flyout="{StaticResource BasicFlyout}" />
  35. </Border>
  36. <Panel Background="{DynamicResource CatalogBaseLowColor}">
  37. <TextBlock Name="ButtonFlyoutXamlText" Padding="15" />
  38. </Panel>
  39. </StackPanel>
  40. <TextBlock FontSize="18" Text="MenuFlyout" />
  41. <StackPanel>
  42. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  43. BorderThickness="1" Padding="15">
  44. <Button Content="Click Me!" Flyout="{StaticResource SharedMenuFlyout}" />
  45. </Border>
  46. <Panel Background="{DynamicResource CatalogBaseLowColor}">
  47. <TextBlock Name="MenuFlyoutXamlText" Padding="15" />
  48. </Panel>
  49. </StackPanel>
  50. <TextBlock FontSize="18" Text="Attached Flyouts" />
  51. <StackPanel>
  52. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  53. BorderThickness="1" Padding="15">
  54. <Panel Background="{DynamicResource CatalogBaseLowColor}"
  55. HorizontalAlignment="Left"
  56. Height="100"
  57. Name="AttachedFlyoutPanel">
  58. <FlyoutBase.AttachedFlyout>
  59. <Flyout>
  60. <Panel Height="100">
  61. <TextBlock Text="Attached Flyout!"
  62. VerticalAlignment="Center"
  63. Margin="10"/>
  64. </Panel>
  65. </Flyout>
  66. </FlyoutBase.AttachedFlyout>
  67. <TextBlock Text="Double click panel to launch AttachedFlyout"
  68. VerticalAlignment="Center"
  69. Margin="10"/>
  70. </Panel>
  71. </Border>
  72. <Panel Background="{DynamicResource CatalogBaseLowColor}">
  73. <TextBlock Name="AttachedFlyoutXamlText" Padding="15" />
  74. </Panel>
  75. </StackPanel>
  76. <TextBlock FontSize="18" Text="Sharing Flyouts" />
  77. <StackPanel>
  78. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  79. BorderThickness="1" Padding="15">
  80. <StackPanel Orientation="Horizontal" Spacing="30">
  81. <Button Content="Launch Flyout on this button" Flyout="{StaticResource SharedMenuFlyout}"/>
  82. <Button Content="Launch Flyout on this button" Flyout="{StaticResource SharedMenuFlyout}"/>
  83. </StackPanel>
  84. </Border>
  85. <Panel Background="{DynamicResource CatalogBaseLowColor}">
  86. <TextBlock Name="SharedFlyoutXamlText" Padding="15" />
  87. </Panel>
  88. </StackPanel>
  89. <TextBlock FontSize="18" Text="Flyout Placements" />
  90. <StackPanel>
  91. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  92. BorderThickness="1" Padding="15">
  93. <UniformGrid Columns="3">
  94. <UniformGrid.Styles>
  95. <Style Selector="Button">
  96. <Setter Property="Margin" Value="10" />
  97. </Style>
  98. </UniformGrid.Styles>
  99. <Button Content="Placement=Top">
  100. <Button.Flyout>
  101. <Flyout Placement="Top">
  102. <Panel Width="100" Height="100">
  103. <TextBlock Text="Flyout Content!" />
  104. </Panel>
  105. </Flyout>
  106. </Button.Flyout>
  107. </Button>
  108. <Button Content="Placement=Bottom">
  109. <Button.Flyout>
  110. <Flyout Placement="Bottom">
  111. <Panel Width="100" Height="100">
  112. <TextBlock Text="Flyout Content!" />
  113. </Panel>
  114. </Flyout>
  115. </Button.Flyout>
  116. </Button>
  117. <Button Content="Placement=Left">
  118. <Button.Flyout>
  119. <Flyout Placement="Left">
  120. <Panel Width="100" Height="100">
  121. <TextBlock Text="Flyout Content!" />
  122. </Panel>
  123. </Flyout>
  124. </Button.Flyout>
  125. </Button>
  126. <Button Content="Placement=Right">
  127. <Button.Flyout>
  128. <Flyout Placement="Right">
  129. <Panel Width="100" Height="100">
  130. <TextBlock Text="Flyout Content!" />
  131. </Panel>
  132. </Flyout>
  133. </Button.Flyout>
  134. </Button>
  135. <Button Content="Placement=Center">
  136. <Button.Flyout>
  137. <Flyout Placement="Center">
  138. <Panel Width="100" Height="100">
  139. <TextBlock Text="Flyout Content!" />
  140. </Panel>
  141. </Flyout>
  142. </Button.Flyout>
  143. </Button>
  144. <Button Content="Placement=TopEdgeAlignedLeft">
  145. <Button.Flyout>
  146. <Flyout Placement="TopEdgeAlignedLeft">
  147. <Panel Width="100" Height="100">
  148. <TextBlock Text="Flyout Content!" />
  149. </Panel>
  150. </Flyout>
  151. </Button.Flyout>
  152. </Button>
  153. <Button Content="Placement=TopEdgeAlignedRight">
  154. <Button.Flyout>
  155. <Flyout Placement="TopEdgeAlignedRight">
  156. <Panel Width="100" Height="100">
  157. <TextBlock Text="Flyout Content!" />
  158. </Panel>
  159. </Flyout>
  160. </Button.Flyout>
  161. </Button>
  162. <Button Content="Placement=BottomEdgeAlignedLeft">
  163. <Button.Flyout>
  164. <Flyout Placement="BottomEdgeAlignedLeft">
  165. <Panel Width="100" Height="100">
  166. <TextBlock Text="Flyout Content!" />
  167. </Panel>
  168. </Flyout>
  169. </Button.Flyout>
  170. </Button>
  171. <Button Content="Placement=BottomEdgeAlignedRight">
  172. <Button.Flyout>
  173. <Flyout Placement="BottomEdgeAlignedRight">
  174. <Panel Width="100" Height="100">
  175. <TextBlock Text="Flyout Content!" />
  176. </Panel>
  177. </Flyout>
  178. </Button.Flyout>
  179. </Button>
  180. <Button Content="Placement=LeftEdgeAlignedTop">
  181. <Button.Flyout>
  182. <Flyout Placement="LeftEdgeAlignedTop">
  183. <Panel Width="100" Height="100">
  184. <TextBlock Text="Flyout Content!" />
  185. </Panel>
  186. </Flyout>
  187. </Button.Flyout>
  188. </Button>
  189. <Button Content="Placement=LeftEdgeAlignedBottom">
  190. <Button.Flyout>
  191. <Flyout Placement="LeftEdgeAlignedBottom">
  192. <Panel Width="100" Height="100">
  193. <TextBlock Text="Flyout Content!" />
  194. </Panel>
  195. </Flyout>
  196. </Button.Flyout>
  197. </Button>
  198. <Button Content="Placement=RightEdgeAlignedTop">
  199. <Button.Flyout>
  200. <Flyout Placement="RightEdgeAlignedTop">
  201. <Panel Width="100" Height="100">
  202. <TextBlock Text="Flyout Content!" />
  203. </Panel>
  204. </Flyout>
  205. </Button.Flyout>
  206. </Button>
  207. <Button Content="Placement=RightEdgeAlignedBottom">
  208. <Button.Flyout>
  209. <Flyout Placement="RightEdgeAlignedBottom">
  210. <Panel Width="100" Height="100">
  211. <TextBlock Text="Flyout Content!" />
  212. </Panel>
  213. </Flyout>
  214. </Button.Flyout>
  215. </Button>
  216. </UniformGrid>
  217. </Border>
  218. </StackPanel>
  219. <TextBlock FontSize="18" Text="Flyout ShowMode" />
  220. <StackPanel>
  221. <Border BorderBrush="{DynamicResource CatalogBaseLowColor}"
  222. BorderThickness="1" Padding="15">
  223. <WrapPanel Orientation="Horizontal">
  224. <WrapPanel.Styles>
  225. <Style Selector="Button">
  226. <Setter Property="Margin" Value="4" />
  227. </Style>
  228. </WrapPanel.Styles>
  229. <Button Content="ShowMode=Standard (default)">
  230. <Button.Flyout>
  231. <Flyout>
  232. <StackPanel Width="200">
  233. <TextBox />
  234. <TextBlock Text="Standard ShowMode attempts to focus the Flyout when its opened" TextWrapping="Wrap"/>
  235. </StackPanel>
  236. </Flyout>
  237. </Button.Flyout>
  238. </Button>
  239. <Button Content="ShowMode=Transient">
  240. <Button.Flyout>
  241. <Flyout ShowMode="Transient">
  242. <StackPanel Width="200">
  243. <TextBox />
  244. <TextBlock Text="Transient ShowMode does not focus the Flyout when opened" TextWrapping="Wrap"/>
  245. </StackPanel>
  246. </Flyout>
  247. </Button.Flyout>
  248. </Button>
  249. <Button Content="ShowMode=TransientWithDismissOnPointerMoveAway">
  250. <Button.Flyout>
  251. <Flyout ShowMode="TransientWithDismissOnPointerMoveAway">
  252. <StackPanel Width="200">
  253. <TextBox />
  254. <TextBlock Text="Show in Transient mode (no focus), but closes the Flyout when the pointer moves away" TextWrapping="Wrap"/>
  255. </StackPanel>
  256. </Flyout>
  257. </Button.Flyout>
  258. </Button>
  259. </WrapPanel>
  260. </Border>
  261. </StackPanel>
  262. </StackPanel>
  263. </ScrollViewer>
  264. </UserControl>