RibbonTest.axaml代码
<RibbonWindow xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="800" Width="1380" x:Name="MainWindow" xmlns:local="using:AvaloniaUI" x:DataType="local:RibbonViewModel" x:Class="AvaloniaUI.RibbonTest" Icon="avares://AvaloniaUI/Resources/Images/avalonia-logo.ico" Title="RibbonTest"> <RibbonWindow.DataContext> <local:RibbonViewModel/> </RibbonWindow.DataContext> <RibbonWindow.Resources> <Panel x:Key="Icon1" Width="14" Height="15" x:Shared="True"> <Border Width="11" Height="12" Margin="0,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="#FFFB983B" BorderThickness="1"> <Border.Clip> <PathGeometry> <PathFigure IsClosed="True" StartPoint="0,0"> <LineSegment Point="2,0" /> <LineSegment Point="2,3" /> <LineSegment Point="9,3" /> <LineSegment Point="9,0" /> <LineSegment Point="11,0" /> <LineSegment Point="11,4" /> <LineSegment Point="6,4" /> <LineSegment Point="6,12" /> <LineSegment Point="0,12" /> </PathFigure> </PathGeometry> </Border.Clip> <Border BorderBrush="#FFF8DB8F" BorderThickness="1" /> </Border> <!-- M 2 3 L 2 1 L 3 1 L 4 0 L 6 0 L 7 1 L 8 1 L 8 3 Z --> <Path Data="M 2.5 3.5 L 2.5 1.5 L 3.5 1.5 L 4.5 0.5 L 6.5 0.5 L 7.5 1.5 L 8.5 1.5 L 8.5 3.5 Z" Opacity="0.625" Stroke="{Binding $parent[TemplatedControl].Foreground}" StrokeThickness="1" /> <Border Width="7" Height="9" HorizontalAlignment="Right" VerticalAlignment="Bottom" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1"> <StackPanel VerticalAlignment="Center" Opacity="0.75" Orientation="Vertical" Spacing="1"> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> </StackPanel> </Border> </Panel> <Panel x:Key="Icon1Large" Width="27" Height="30" Margin="0,0,1,0" x:Shared="True"> <Border Width="21" Height="24" Margin="0,4,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="#FFFB983B" BorderThickness="1"> <Border.Clip> <PathGeometry> <PathFigure IsClosed="True" StartPoint="0,0"> <LineSegment Point="4,0" /> <LineSegment Point="4,3" /> <LineSegment Point="17,3" /> <LineSegment Point="17,0" /> <LineSegment Point="21,0" /> <LineSegment Point="21,7" /> <LineSegment Point="12,7" /> <LineSegment Point="12,24" /> <LineSegment Point="0,24" /> </PathFigure> </PathGeometry> </Border.Clip> <Border BorderBrush="#FFF8DB8F" BorderThickness="1" /> </Border> <Path Data="M 4.5 3.5 L 7.5 3.5 L 9.5 0.5 L 11.5 0.5 L 13.5 3.5 L 16.5 3.5 L 16.5 7.5 L 4.5 7.5 Z" Opacity="0.625" Stroke="{Binding $parent[TemplatedControl].Foreground}" StrokeThickness="1" /> <Border Width="14" Height="18" HorizontalAlignment="Right" VerticalAlignment="Bottom" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1"> <StackPanel VerticalAlignment="Center" Opacity="0.75" Orientation="Vertical" Spacing="3"> <Rectangle Width="6" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="6" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="6" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> </StackPanel> </Border> </Panel> <Panel x:Key="Icon1QuickAccess" Width="14" Height="15" x:Shared="True"> <Border Width="11" Height="12" Margin="0,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1"> <Border.Clip> <PathGeometry> <PathFigure IsClosed="True" StartPoint="0,0"> <LineSegment Point="2,0" /> <LineSegment Point="2,3" /> <LineSegment Point="9,3" /> <LineSegment Point="9,0" /> <LineSegment Point="11,0" /> <LineSegment Point="11,4" /> <LineSegment Point="6,4" /> <LineSegment Point="6,12" /> <LineSegment Point="0,12" /> </PathFigure> </PathGeometry> </Border.Clip> </Border> <Path Data="M 2.5 3.5 L 2.5 1.5 L 3.5 1.5 L 4.5 0.5 L 6.5 0.5 L 7.5 1.5 L 8.5 1.5 L 8.5 3.5 Z" Stroke="{Binding $parent[TemplatedControl].Foreground}" StrokeThickness="1" /> <Border Width="7" Height="9" HorizontalAlignment="Right" VerticalAlignment="Bottom" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1"> <StackPanel VerticalAlignment="Center" Orientation="Vertical" Spacing="1"> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> <Rectangle Width="3" Height="1" Fill="{Binding $parent[TemplatedControl].Foreground}" /> </StackPanel> </Border> </Panel> <Panel x:Key="Icon2" Width="16" Height="16" x:Shared="True"> <Path Data="M 0.5 0.5 L 15.5 0.5 L 15.5 15.5 L 2.5 15.5 L 0.5 13.5 Z" Fill="#FFD998DD" Stroke="#FF563457" StrokeThickness="1" /> <Border Width="10" Height="6" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Top" Background="White" BorderBrush="#7F563457" BorderThickness="1,0,1,1" /> <Border Width="8" Height="5" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Background="White" BorderBrush="#7F563457" BorderThickness="1,1,1,0" /> </Panel> <Panel x:Key="Icon2Large" Width="27" Height="27" x:Shared="True"> <Path Data="M 0.5 0.5 L 26.5 0.5 L 26.5 26.5 L 3.5 26.5 L 0.5 23.5 Z" Fill="#FFD998DD" Stroke="#FF563457" StrokeThickness="1" /> <Border Width="19" Height="12" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Top" Background="White" BorderBrush="#7F563457" BorderThickness="1,0,1,1" /> <Border Width="11" Height="7" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Background="White" BorderBrush="#7F563457" BorderThickness="1,1,1,0" /> </Panel> <Panel x:Key="Icon2QuickAccess" Width="16" Height="16" x:Shared="True"> <Path Data="M 0.5 0.5 L 15.5 0.5 L 15.5 15.5 L 2.5 15.5 L 0.5 13.5 Z" Stroke="{Binding $parent[Button ].Foreground}" StrokeThickness="1" /> <Border Width="10" Height="6" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Top" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1,0,1,1" /> <Border Width="8" Height="5" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" BorderBrush="{Binding $parent[TemplatedControl].Foreground}" BorderThickness="1,1,1,0" /> </Panel> </RibbonWindow.Resources> <RibbonWindow.TitleBarBackground> <VisualBrush AlignmentX="Left" AlignmentY="Top" Stretch="UniformToFill"> <VisualBrush.Visual> <Panel Width="{Binding #MainWindow.Bounds.Width}" Height="{Binding #MainWindow.Bounds.Height}" Background="{DynamicResource FillBrush}"> <Panel.Resources> <SolidColorBrush x:Key="FillBrush">#C02B579A</SolidColorBrush> <SolidColorBrush x:Key="LineBrush">#FF274F8C</SolidColorBrush> <!-- 16000000 --> </Panel.Resources> <Panel.Styles> <Style Selector="Path"> <Setter Property="Stroke" Value="{DynamicResource LineBrush}" /> <Setter Property="StrokeThickness" Value="4" /> <Setter Property="StrokeJoin" Value="Round" /> </Style> <Style Selector="Ellipse"> <Setter Property="Fill" Value="{DynamicResource FillBrush}" /> <Setter Property="Stroke" Value="{DynamicResource LineBrush}" /> <Setter Property="StrokeThickness" Value="3" /> <Setter Property="Width" Value="10" /> <Setter Property="Height" Value="10" /> </Style> </Panel.Styles> <Canvas Width="456" Height="60" HorizontalAlignment="Right" VerticalAlignment="Top" ClipToBounds="True"> <Path Data="M 14 6 L 194 6 L 249 45 L 340 45 L 362 21 L 480 21" /> <Ellipse Canvas.Left="9" Canvas.Top="1" /> <Ellipse Canvas.Left="168" Canvas.Top="1" /> <Path Data="M 5 50 L 93 50 L 117 33 L 208 33 L 233 50 L 394 50 L 436 -1" /> <Ellipse Canvas.Left="0" Canvas.Top="45" /> <Ellipse Canvas.Left="194" Canvas.Top="28" /> <Ellipse Canvas.Left="13" Canvas.Top="11" Width="36" Height="36" Fill="Transparent" StrokeThickness="6" /> <Path Data="M 26 36 L 26 24 L 38 24" StrokeJoin="Miter" StrokeThickness="5" /> <Path Data="M 26 24 L 38 36" StrokeJoin="Miter" StrokeThickness="5" /> <Ellipse Canvas.Left="232" Canvas.Top="-19" Width="55" Height="55" Fill="Transparent" StrokeThickness="6" /> <Path Data="M 249 -4 L 269 -4 L 269 16" StrokeJoin="Miter" StrokeThickness="6" /> <Path Data="M 269 -4 L 249 16" StrokeJoin="Miter" StrokeThickness="6" /> </Canvas> </Panel> </VisualBrush.Visual> </VisualBrush> </RibbonWindow.TitleBarBackground> <RibbonWindow.QuickAccessToolbar> <QuickAccessToolbar> <QuickAccessToolbar.RecommendedItems> <QuickAccessRecommendation Item="{Binding #RibbonSplitButton1}" /> <QuickAccessRecommendation Item="{Binding #RibbonSplitButton2}" /> <QuickAccessRecommendation Item="{Binding #RibbonSplitButton3}" /> </QuickAccessToolbar.RecommendedItems> </QuickAccessToolbar> </RibbonWindow.QuickAccessToolbar> <RibbonWindow.Ribbon> <DesktopRibbon HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent" DataContext="{Binding .}" Focusable="True" Orientation="{Binding RibbonOrientation}"> <DesktopRibbon.Styles> <Style Selector="DesktopRibbon /template/ ContentControl#PART_GroupsPresenterHolder"> <Setter Property="Margin" Value="5,0" /> <Setter Property="CornerRadius" Value="5" /> </Style> <Style Selector="CheckBox TextBlock"> <Setter Property="TextWrapping" Value="Wrap" /> </Style> <Style Selector="RibbonGroupBox"> <Setter Property="Command" Value="{Binding OnClickCommand}" /> <Setter Property="CommandParameter" Value="{Binding Path=Header, RelativeSource={RelativeSource Mode=Self}}" /> </Style> <Style Selector="RibbonButton,RibbonToggleButton"> <!-- ,ribbon|SplitButtonControl --> <Setter Property="Command" Value="{Binding OnClickCommand}" /> <Setter Property="CommandParameter" Value="{Binding Path=Content, RelativeSource={RelativeSource Mode=Self}}" /> </Style> <Style Selector="RibbonButton[Size=Small],RibbonToggleButton[Size=Small]"> <!-- ,ribbon|SplitButtonControl[Size=Small] --> <Setter Property="CommandParameter" Value="{Binding Path=(ToolTip.Tip), RelativeSource={RelativeSource Mode=Self}}" /> </Style> <Style Selector="SplitButtonControl"> <Setter Property="Command" Value="{Binding OnClickCommand}" /> <Setter Property="CommandParameter" Value="{Binding Path=Content, RelativeSource={RelativeSource Mode=Self}}" /> </Style> <Style Selector="SplitButtonControl[Size=Small]"> <Setter Property="CommandParameter" Value="{Binding Path=(ToolTip.Tip), RelativeSource={RelativeSource Mode=Self}}" /> </Style> </DesktopRibbon.Styles> <DesktopRibbon.HelpPaneContent> <StackPanel VerticalAlignment="Center" Orientation="{Binding RibbonOrientation}"> <RibbonComboBox Height="24" Content="ComboBox" /> <Button Name="HelpButton" Height="24" HorizontalAlignment="Stretch" Classes="RibbonHelpButton" Command="{Binding HelpCommand}" DockPanel.Dock="Bottom" Focusable="False" ToolTip.Tip="{DynamicResource AvaloniaRibbon.GetHelp}"> <TextBlock Height="10" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" Text="?" TextAlignment="Center" /> </Button> </StackPanel> </DesktopRibbon.HelpPaneContent> <DesktopRibbon.Menu> <RibbonMenu Width="50" KeyTip.KeyTipKeys="F"> <RibbonMenuItem Group="File" Header="New" IsTopDocked="True"> <RibbonMenuItem.Icon> <Rectangle Width="32" Height="32" Fill="Red" /> </RibbonMenuItem.Icon> <RibbonMenuItem.Content /> </RibbonMenuItem> <RibbonMenuItem Group="File" Header="Open" IsTopDocked="True"> <RibbonMenuItem.Icon> <Rectangle Width="32" Height="32" Fill="Green" /> </RibbonMenuItem.Icon> <RibbonMenuItem.Content> <DockPanel> <TabControl DockPanel.Dock="Top"> <TabItem Header="TEST" /> </TabControl> </DockPanel> </RibbonMenuItem.Content> </RibbonMenuItem> <RibbonMenuItem Header="Export"> <RibbonMenuItem.Icon> <Rectangle Width="32" Height="32" Fill="Purple" /> </RibbonMenuItem.Icon> </RibbonMenuItem> <RibbonMenuItem Header="Exit" IsBottomDocked="True"> <RibbonMenuItem.Icon> <Rectangle Width="32" Height="32" Fill="Brown" /> </RibbonMenuItem.Icon> </RibbonMenuItem> </RibbonMenu> </DesktopRibbon.Menu> <DesktopRibbon.Tabs> <RibbonTab Header="Home" KeyTip.KeyTipKeys="B"> <RibbonTab.Groups> <!-- Split Button Controls --> <RibbonGroupBox Command="{Binding OnClickCommand}" Header="SplitButtonControls" KeyTip.KeyTipKeys="S"> <SplitButtonControl x:Name="RibbonSplitButton1" Content="Large" Icon="{DynamicResource Icon1}" LargeIcon="{DynamicResource Icon1Large}" QuickAccessIcon="{DynamicResource Icon1QuickAccess}" Size="Large"> <SplitButtonControl.Flyout> <MenuFlyout Placement="Bottom"> <MenuItem Header="Item 1"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 2" InputGesture="Ctrl+A"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 3"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> </MenuFlyout> </SplitButtonControl.Flyout> </SplitButtonControl> <SplitButtonControl x:Name="RibbonSplitButton2" Content="Medium" Icon="{DynamicResource Icon2}" LargeIcon="{DynamicResource Icon2Large}" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" Size="Medium"> <SplitButtonControl.Flyout> <MenuFlyout Placement="Bottom"> <MenuItem Header="Item 1"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 2" InputGesture="Ctrl+A"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 3"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> </MenuFlyout> </SplitButtonControl.Flyout> </SplitButtonControl> <SplitButtonControl x:Name="RibbonSplitButton3" Icon="{DynamicResource Icon2}" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Small" MinSize="Small" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" Size="Small" ToolTip.Tip="Small"> <SplitButtonControl.Flyout> <MenuFlyout Placement="Bottom"> <MenuItem Header="Item 1"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 2" InputGesture="Ctrl+A"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> <MenuItem Header="Item 3"> <MenuItem Header="Subitem 1" /> <MenuItem Header="Subitem 2" /> <MenuItem Header="Subitem 3" /> </MenuItem> </MenuFlyout> </SplitButtonControl.Flyout> </SplitButtonControl> </RibbonGroupBox> <!-- Normal Button Controls --> <RibbonGroupBox Command="{Binding OnClickCommand}" Header="RibbonButtons" KeyTip.KeyTipKeys="B"> <RibbonButton Content="Large" Icon="{DynamicResource Icon1}" KeyTip.KeyTipKeys="U" LargeIcon="{DynamicResource Icon1Large}" MaxSize="Large" MinSize="Large" QuickAccessIcon="{DynamicResource Icon1QuickAccess}" /> <RibbonButton Content="Medium" Icon="{DynamicResource Icon2}" KeyTip.KeyTipKeys="V" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Medium" MinSize="Medium" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" /> <RibbonButton Icon="{DynamicResource Icon2}" KeyTip.KeyTipKeys="W" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Small" MinSize="Small" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" ToolTip.Tip="Small" /> </RibbonGroupBox> <!-- Toggle Button Controls --> <RibbonGroupBox Command="{Binding OnClickCommand}" Header="RibbonToggleButtons" KeyTip.KeyTipKeys="T"> <RibbonToggleButton Content="Large" Icon="{DynamicResource Icon1}" KeyTip.KeyTipKeys="X" LargeIcon="{DynamicResource Icon1Large}" MaxSize="Large" MinSize="Large" QuickAccessIcon="{DynamicResource Icon1QuickAccess}" /> <RibbonToggleButton Content="Medium" Icon="{DynamicResource Icon2}" KeyTip.KeyTipKeys="Y" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Medium" MinSize="Medium" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" /> <RibbonToggleButton Icon="{DynamicResource Icon2}" KeyTip.KeyTipKeys="Z" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Small" MinSize="Small" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" ToolTip.Tip="Small" /> </RibbonGroupBox> <!-- DropDown Button Controls --> <RibbonGroupBox Command="{Binding OnClickCommand}" Header="RibbonDropDownButtons" KeyTip.KeyTipKeys="S"> <RibbonDropDownButton x:Name="LargeRibbonDropDownButton" Content="Large" Icon="{DynamicResource Icon1}" LargeIcon="{DynamicResource Icon1Large}" MaxSize="Large" MinSize="Large" QuickAccessIcon="{DynamicResource Icon1QuickAccess}"> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 1" Header="Item 1"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Red" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> <RibbonDropDownSeparator /> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 2" Header="Item 2"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Green" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> <RibbonDropDownItemsPresenter Header="Test"> <RibbonButton Size="Small"> <RibbonButton.Icon> <Rectangle Width="16" Height="16" Fill="Green" /> </RibbonButton.Icon> </RibbonButton> <RibbonButton Content="Medium" Size="Medium"> <RibbonButton.Icon> <Rectangle Width="16" Height="16" Fill="Red" /> </RibbonButton.Icon> </RibbonButton> <RibbonButton Content="Large" Size="Large"> <RibbonButton.LargeIcon> <Rectangle Width="16" Height="16" Fill="Purple" /> </RibbonButton.LargeIcon> </RibbonButton> </RibbonDropDownItemsPresenter> </RibbonDropDownButton> <RibbonDropDownButton Content="Medium" Icon="{DynamicResource Icon2}" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Medium" MinSize="Medium" QuickAccessIcon="{DynamicResource Icon2QuickAccess}"> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 1" Header="Item 1"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Red" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 2" Header="Item 2"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Green" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> </RibbonDropDownButton> <RibbonDropDownButton Icon="{DynamicResource Icon2}" LargeIcon="{DynamicResource Icon2Large}" MaxSize="Small" MinSize="Small" QuickAccessIcon="{DynamicResource Icon2QuickAccess}" ToolTip.Tip="Small"> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 1" Header="Item 1"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Red" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> <RibbonDropDownItem Command="{Binding OnClickCommand}" CommandParameter="RibbonDropDownButton Item 2" Header="Item 2"> <RibbonDropDownItem.Icon> <Rectangle Width="16" Height="16" Fill="Green" /> </RibbonDropDownItem.Icon> </RibbonDropDownItem> </RibbonDropDownButton> </RibbonGroupBox> <!-- Combobox--> <RibbonGroupBox Header="ComboBox"> <RibbonGroupWrapPanel Orientation="Vertical"> <RibbonGroupWrapPanel Orientation="Horizontal"> <RibbonComboBox Content="With Icon" Icon="{StaticResource Icon1QuickAccess}" Size="Large"> <ComboBoxItem>TEST</ComboBoxItem> <ComboBoxItem>ONE</ComboBoxItem> <ComboBoxItem>TWO</ComboBoxItem> </RibbonComboBox> <RibbonComboBox Content="Without Icon" Size="Large"> <ComboBoxItem>TEST</ComboBoxItem> <ComboBoxItem>THREE</ComboBoxItem> <ComboBoxItem>FOUR</ComboBoxItem> </RibbonComboBox> </RibbonGroupWrapPanel> <RibbonComboBox HorizontalAlignment="Center" Size="Large"> <RibbonComboBox.Content> <StackPanel Orientation="Horizontal"> <ContentPresenter Content="{DynamicResource Icon2QuickAccess}" /> <Label>Custom Content</Label> </StackPanel> </RibbonComboBox.Content> <ComboBoxItem>TEST</ComboBoxItem> <ComboBoxItem>THREE</ComboBoxItem> <ComboBoxItem>FOUR</ComboBoxItem> </RibbonComboBox> </RibbonGroupWrapPanel> </RibbonGroupBox> <!--Large Gallery--> <RibbonGroupBox Command="{Binding OnClickCommand}" Header="Large gallery" KeyTip.KeyTipKeys="L"> <Gallery Size="Large"> <GalleryItem Content="Item 1"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Red" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 2"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="OrangeRed" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 3"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Orange" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 4"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Yellow" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 5"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="GreenYellow" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 6"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="YellowGreen" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 7"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Green" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 8"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Turquoise" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 9"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Cyan" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 10"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="SkyBlue" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 11"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="Blue" /> </GalleryItem.LargeIcon> </GalleryItem> <GalleryItem Content="Item 12"> <GalleryItem.LargeIcon> <Rectangle Width="32" Height="32" Fill="BlueViolet" /> </GalleryItem.LargeIcon> </GalleryItem> </Gallery> </RibbonGroupBox> </RibbonTab.Groups> </RibbonTab> </DesktopRibbon.Tabs> </DesktopRibbon> </RibbonWindow.Ribbon> <!--Main Content--> <StackPanel Orientation="Vertical"> <Label FontWeight="Bold">Ribbon Orientation</Label> <ToggleSwitch x:Name="OrientationToggleSwitch" IsChecked="{Binding SwitchOrientation}" OffContent="Vertical" OnContent="Horizontal" /> </StackPanel> </RibbonWindow>
RibbonTest.axaml.cs代码
using Avalonia;
using Avalonia.Controls;
using Avalonia.Layout;
using Avalonia.Markup.Xaml;
using AvaloniaUI.Ribbon.Desktop;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
namespace AvaloniaUI;
public partial class RibbonViewModel : ObservableObject
{
[ObservableProperty] private string help = "Help requested!";
[ObservableProperty] private Orientation ribbonOrientation = Orientation.Horizontal;
[ObservableProperty] private SystemDecorations selectedDecoration;
[ObservableProperty] private bool switchOrientation = true;
public string Greeting => "Welcome to Avalonia!";
public RibbonViewModel()
{
}
public void HelpCommand(object parameter)
{
Console.WriteLine(Help);
}
[RelayCommand]
public void OnClickCommand(object parameter)
{
var paramString = "[NO CONTENT]";
if (parameter != null)
{
if (parameter is string str)
paramString = str;
else
paramString = parameter.ToString();
}
Console.WriteLine("OnClickCommand invoked: " + paramString);
}
partial void OnSwitchOrientationChanged(bool value)
{
if (value)
RibbonOrientation = Orientation.Horizontal;
else
RibbonOrientation = Orientation.Vertical;
}
}
public partial class RibbonTest : RibbonWindow
{
public RibbonTest()
{
InitializeComponent();
}
}
运行效果

浙公网安备 33010602011771号