在XAML中为Ribbon控件添加组合框

本文关键字:添加 组合 控件 Ribbon XAML 中为 | 更新日期: 2023-09-27 18:02:41

我有一个带有Ribbon Control的WPF应用程序。我想添加一个ComboBox,以显示登录用户旁边的帮助按钮。但是当我尝试添加ComboBox时,它被创建为Tab

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Ribbon x:Name="RibbonWin" SelectedIndex="0" Margin="0,0,0,113">
        <Ribbon.HelpPaneContent>
            <RibbonButton SmallImageSource="Images'help.png"></RibbonButton>
        </Ribbon.HelpPaneContent>
        <RibbonComboBox>
            <ComboBoxItem Content="Test1"/>
        </RibbonComboBox>
        <RibbonTab Header="Home" KeyTip="H" Margin="0,0,0,-1" >
            <RibbonGroup x:Name="ClipboardGroup" Header="Clipboard">
                <RibbonMenuButton LargeImageSource="Images'paste.jpg" Label="Paste" KeyTip="V">
                    <RibbonMenuItem ImageSource="Images'paste.jpg" Header="Keep Text Only" KeyTip="T"/>
                    <RibbonMenuItem ImageSource="Images'paste.jpg" Header="Paste Special..." KeyTip="S"/>
                </RibbonMenuButton>
                <RibbonButton SmallImageSource="Images'cut.jpg" Label="Cut" KeyTip="X" />
                <RibbonButton SmallImageSource="Images'copy.jpg" Label="Copy" KeyTip="C" />
            </RibbonGroup>
            <RibbonGroup x:Name="Questions" Header="Questions And Answers">
                <RibbonMenuButton LargeImageSource="Images'Question.jpg" Label="Questions" KeyTip="V">
                    <RibbonMenuItem ImageSource="Images'paste.jpg" Header="Add Question" KeyTip="T"/>
                    <RibbonMenuItem ImageSource="Images'paste.jpg" Header="Paste Special..." KeyTip="S"/>
                </RibbonMenuButton>
                <RibbonButton SmallImageSource="Images'Save.jpg" Label="Save" KeyTip="X" />
                <RibbonButton SmallImageSource="Images'Add.jpg" Label="Add" KeyTip="C" />
            </RibbonGroup>
        </RibbonTab>
        <RibbonTab Header="Insert" KeyTip="I">
        </RibbonTab>
        <RibbonTab Header="PageLayout" KeyTip="L">
        </RibbonTab>
    </Ribbon>
</Grid>

还有一种方法可以删除默认创建的左侧Application Menu ComboBox

在XAML中为Ribbon控件添加组合框

将RibbonApplicationMenu放入applicationmenu属性中,并将其可见性设置为' collapse '。这不会删除应用程序菜单,但至少它不再可见。没有其他方法可以隐藏它。

ComboBox必须插入到RibbonTab中,所以如果你不指定任何人,RibbonTab将隐式创建。

下面的示例演示了如何隐藏应用程序菜单和插入组合框:

<Ribbon>
    <Ribbon.ApplicationMenu>
        <RibbonApplicationMenu Visibility="Collapsed"></RibbonApplicationMenu>
    </Ribbon.ApplicationMenu>  
    <RibbonTab>
        <RibbonGroup>
            <RibbonComboBox></RibbonComboBox>
        </RibbonGroup>
    </RibbonTab>
</Ribbon>

我从朋友那里得到的。这可能对你有帮助创建自己的模板并将其添加到Ribbon HelpPaneContentTempalte

   <Ribbon.HelpPaneContentTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="24">
                        <ToggleButton x:Name="btn" >
                            <TextBlock Text="Operator"/>
                        </ToggleButton>
                        <Popup IsOpen="{Binding IsChecked, ElementName=btn}" x:Name="Popup" StaysOpen="False" Placement="Bottom" 
                                   PlacementTarget="{Binding ElementName=btn}" Height="120" Width="150" HorizontalOffset="-90" >
                            <Popup.Resources>
                                <Style  x:Key="LinkButton"  TargetType="Button">
                                    <Setter Property="Template">
                                        <Setter.Value>
                                            <ControlTemplate TargetType="Button">
                                                <TextBlock>
                                                        <ContentPresenter />
                                                </TextBlock>
                                            </ControlTemplate>
                                        </Setter.Value>
                                    </Setter>
                                    <Setter Property="Foreground" Value="Blue" />
                                    <Style.Triggers>
                                        <Trigger Property="IsMouseOver" Value="true">
                                            <Setter Property="Foreground" Value="Red" />
                                        </Trigger>
                                    </Style.Triggers>
                                </Style>
                            </Popup.Resources>
                            <Border BorderBrush="Gray" BorderThickness="2" Background="White" >
                                <StackPanel Orientation="Vertical">
                                    <StackPanel Orientation="Horizontal" Height="50">
                                        <Image Source="Images'UserPhoto.png" Height="30"/>
                                        <StackPanel VerticalAlignment="Center">
                                            <TextBlock Text="Operator" FontSize="16"  Margin="10,0,0,0"/>
                                            <TextBlock Text="Operator@xxx.com" FontSize="10" Foreground="DarkGray" Margin="10,0,0,0"/>
                                        </StackPanel>
                                    </StackPanel>
                                    <Separator Background="LightGray"/>
                                    <StackPanel Height="30">
                                        <Button x:Name="btnAccountSettings" Content="Account Settings" Style="{StaticResource LinkButton}"  Width="100" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center"></Button>
                                    </StackPanel>
                                    <Separator Background="LightGray"/>
                                    <StackPanel Height="30">
                                        <Button x:Name="btnSwitchAccount" Content="Switch Account" Style="{StaticResource LinkButton}"  Width="100" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center"></Button>
                                    </StackPanel>
                                </StackPanel>
                            </Border>
                        </Popup>
                        <ContentPresenter Content="{TemplateBinding Property= ContentControl.Content}" />
                    </StackPanel>
                </DataTemplate>
            </Ribbon.HelpPaneContentTemplate>
            <Ribbon.HelpPaneContent>
                <RibbonButton x:Name="btnHelp" SmallImageSource="Images'help.png" />
            </Ribbon.HelpPaneContent>