在XAML中将组合框添加到功能区控件中

时间:2014-05-09 21:09:10

标签: c# wpf xaml combobox

我有一个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

2 个答案:

答案 0 :(得分:0)

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

必须将ComboBox插入到RibbonTab中,因此如果您未指定任何人,则会隐式创建RibbonTab。

以下示例演示如何隐藏应用程序菜单并插入组合框:

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

答案 1 :(得分:0)

我是从朋友那里得到的, 这可能对你有帮助 创建自己的模板并将其添加到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>