CommandBarDynamicOverflowPage.xaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <UserControl xmlns="https://github.com/avaloniaui"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. x:Class="ControlCatalog.Pages.CommandBarDynamicOverflowPage">
  4. <UserControl.Resources>
  5. <StreamGeometry x:Key="AddIcon">M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z</StreamGeometry>
  6. <StreamGeometry x:Key="SaveIcon">M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z</StreamGeometry>
  7. <StreamGeometry x:Key="ShareIcon">M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19C20.92,17.39 19.61,16.08 18,16.08Z</StreamGeometry>
  8. <StreamGeometry x:Key="BoldIcon">M15.6,10.79C17.04,10.07 18,8.64 18,7C18,4.79 16.21,3 14,3H7V21H14.73C16.78,21 18.5,19.37 18.5,17.32C18.5,15.82 17.72,14.53 16.5,13.77C16.2,13.59 15.9,13.44 15.6,13.32V10.79M10,6.5H13C13.83,6.5 14.5,7.17 14.5,8C14.5,8.83 13.83,9.5 13,9.5H10V6.5M13.5,17.5H10V14H13.5C14.33,14 15,14.67 15,15.5C15,16.33 14.33,17.5 13.5,17.5Z</StreamGeometry>
  9. <StreamGeometry x:Key="ItalicIcon">M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z</StreamGeometry>
  10. <StreamGeometry x:Key="DeleteIcon">M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z</StreamGeometry>
  11. <StreamGeometry x:Key="ExportIcon">M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20M16,11V18.1L13.9,16L11.1,18.8L8.3,16L11.1,13.2L9,11.1L16,11Z</StreamGeometry>
  12. </UserControl.Resources>
  13. <DockPanel>
  14. <ScrollViewer DockPanel.Dock="Right" Width="260">
  15. <StackPanel Margin="12" Spacing="8">
  16. <TextBlock Text="Configuration" FontWeight="SemiBold" FontSize="16"
  17. Foreground="{DynamicResource SystemControlHighlightAccentBrush}" />
  18. <TextBlock Text="Container Width" FontWeight="SemiBold" />
  19. <Slider x:Name="WidthSlider"
  20. Minimum="120"
  21. Maximum="700"
  22. Value="400"
  23. ValueChanged="OnWidthChanged" />
  24. <TextBlock x:Name="WidthLabel"
  25. Text="400"
  26. HorizontalAlignment="Center"
  27. Opacity="0.7" />
  28. <Separator />
  29. <CheckBox x:Name="DynamicOverflowCheck"
  30. Content="IsDynamicOverflowEnabled"
  31. IsChecked="True"
  32. IsCheckedChanged="OnDynamicOverflowChanged" />
  33. <CheckBox x:Name="SecondaryVisibleCheck"
  34. Content="Include secondary command"
  35. IsChecked="False"
  36. IsCheckedChanged="OnSecondaryVisibilityChanged" />
  37. <Separator />
  38. <TextBlock Text="Resize to force grouped commands into overflow and verify that primary separators never become leading, trailing, or overflow items."
  39. FontSize="12"
  40. Opacity="0.7"
  41. TextWrapping="Wrap" />
  42. <Separator />
  43. <TextBlock Text="Overflow Priority" FontWeight="SemiBold" />
  44. <TextBlock Text="DynamicOverflowOrder priority (lower = stays visible longer):"
  45. FontSize="12" Opacity="0.7" TextWrapping="Wrap" />
  46. <TextBlock Text="0: New, Save (always shown last to overflow)" FontSize="11" Opacity="0.7" />
  47. <TextBlock Text="1: Share" FontSize="11" Opacity="0.7" />
  48. <TextBlock Text="2: Bold, Italic" FontSize="11" Opacity="0.7" />
  49. <TextBlock Text="3: Delete (overflows first)" FontSize="11" Opacity="0.7" />
  50. </StackPanel>
  51. </ScrollViewer>
  52. <Border DockPanel.Dock="Right" Width="1" Background="{DynamicResource SystemControlForegroundBaseMediumLowBrush}" />
  53. <StackPanel Margin="12" Spacing="8">
  54. <TextBlock x:Name="StatusText"
  55. Text="Visible primary: 6 commands, 2 separators&#x0a;Overflow items: 2 commands, 1 separator&#x0a;Synthetic overflow divider: present"
  56. FontSize="12"
  57. Opacity="0.7" />
  58. <Border x:Name="BarContainer"
  59. Width="400"
  60. HorizontalAlignment="Left"
  61. BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}"
  62. BorderThickness="1"
  63. CornerRadius="4"
  64. ClipToBounds="True">
  65. <CommandBar x:Name="DemoBar" IsDynamicOverflowEnabled="True">
  66. <CommandBar.PrimaryCommands>
  67. <CommandBarButton Label="New" DynamicOverflowOrder="0"><CommandBarButton.Icon><PathIcon Data="{StaticResource AddIcon}" /></CommandBarButton.Icon></CommandBarButton>
  68. <CommandBarButton Label="Save" DynamicOverflowOrder="0"><CommandBarButton.Icon><PathIcon Data="{StaticResource SaveIcon}" /></CommandBarButton.Icon></CommandBarButton>
  69. <CommandBarSeparator />
  70. <CommandBarButton Label="Share" DynamicOverflowOrder="1"><CommandBarButton.Icon><PathIcon Data="{StaticResource ShareIcon}" /></CommandBarButton.Icon></CommandBarButton>
  71. <CommandBarButton Label="Bold" DynamicOverflowOrder="2"><CommandBarButton.Icon><PathIcon Data="{StaticResource BoldIcon}" /></CommandBarButton.Icon></CommandBarButton>
  72. <CommandBarSeparator />
  73. <CommandBarButton Label="Italic" DynamicOverflowOrder="2"><CommandBarButton.Icon><PathIcon Data="{StaticResource ItalicIcon}" /></CommandBarButton.Icon></CommandBarButton>
  74. <CommandBarButton Label="Delete" DynamicOverflowOrder="3"><CommandBarButton.Icon><PathIcon Data="{StaticResource DeleteIcon}" /></CommandBarButton.Icon></CommandBarButton>
  75. </CommandBar.PrimaryCommands>
  76. <CommandBar.SecondaryCommands>
  77. <CommandBarButton x:Name="DemoSecondaryCommand" Label="Export"><CommandBarButton.Icon><PathIcon Data="{StaticResource ExportIcon}" /></CommandBarButton.Icon></CommandBarButton>
  78. </CommandBar.SecondaryCommands>
  79. </CommandBar>
  80. </Border>
  81. </StackPanel>
  82. </DockPanel>
  83. </UserControl>