WPF中的Ribbon-Like控件

时间:2010-02-17 13:41:56

标签: .net wpf wpf-controls

我正在尝试为工具栏创建一些下拉菜单,并希望它们看起来像Word中的页面布局下拉菜单(例如“方向”和“大小”菜单)。

我尝试使用ComboBox进行此操作,但我无法弄清楚如何显示选项名称,而不是ComboBox顶部的选定项目。是否可以让ComboBox在顶部显示您想要的内容?

我是否应该尝试使用ComboBox执行此操作,还是有更好的方法来解决此问题?

alt text http://www.mstipsandtricks.com/tips-and-tricks/ms-office-tips-and-tricks/ms-word/How-to-set-orientation-to-entire-document-or-part-of-document-in-MS-Word-2007/figure2.jpg

编辑:看起来我需要一个Ribbon控件。我可以用ComboBox制作一个简单的吗?看起来我很接近,我只需要能够在ComboBox中显示一个类别而不是所选项目。

4 个答案:

答案 0 :(得分:4)

Word使用色带。

这是WPF Ribbons project。这将有办法做你想要的。

答案 1 :(得分:2)

如果需要,可以使用组合框构建它,请查看ComboBox ControlTemplate示例:http://msdn.microsoft.com/en-us/library/ms752094.aspx

您可以在该页面中看到组合框由切换按钮,弹出窗口,文本框和内容呈现器组成(最后两个中只有一个是可见的,具体取决于组合框模式)。

您可以从组合框模板中删除文本框和内容展示器,并将其替换为您想要的任何内容 - 例如,大图标和选项名称。

您还可以使用与弹出窗口绑定的切换按钮相同的技术来创建自己的(非组合框)下拉控件。

答案 2 :(得分:2)

我自己没有尝试过,但本周早些时候WPF“Fluent Ribbon Control Suite”被添加到Visual Studio Gallery中。

答案 3 :(得分:0)

这是一个如何通过编写xaml代码来使用功能区的示例。一旦你习惯它,这很容易。

首先添加此引用: enter image description here

然后将此命名空间添加到xaml文件中:

enter image description here

现在使用此代码模板:

<DockPanel>
    <ribbon:Ribbon DockPanel.Dock="Top" Margin="0,-22,0,0">

        <Ribbon.ApplicationMenu>
            <RibbonApplicationMenu SmallImageSource="Images/list.png">

                <RibbonApplicationMenu.AuxiliaryPaneContent>
                    <RibbonGallery ScrollViewer.VerticalScrollBarVisibility="Auto">
                        <RibbonGalleryCategory MaxColumnCount="1">
                            <RibbonGalleryItem x:Name="GalleryItem1" Content="C# developer" 
                                MouseOverBackground="Transparent"
                                MouseOverBorderBrush="Transparent"
                                CheckedBackground="Transparent"
                                CheckedBorderBrush="Transparent"
                                               />
                            <RibbonGalleryItem>
                                <Hyperlink x:Name="hl1" Click="hl1_Click">
                                    <Run Text="http://www.bing.com"/>
                                </Hyperlink>
                            </RibbonGalleryItem>
                        </RibbonGalleryCategory>
                    </RibbonGallery>
                </RibbonApplicationMenu.AuxiliaryPaneContent>
                <RibbonApplicationMenuItem x:Name="menuItem1" Header="Add" ImageSource="Images/add.png"/>
                <RibbonApplicationMenuItem x:Name="menuItem2" Header="Settings"
                                           ImageSource="Images/system_preferences.png"/>

            </RibbonApplicationMenu>
        </Ribbon.ApplicationMenu>
        <!--Rider-->
        <RibbonTab x:Name="rbnTab1" Header="Tab1">
            <RibbonGroup x:Name="rbnGr1" Header="General">
                <RibbonButton x:Name="btnRibbon1" Label="Save" LargeImageSource="Images/filesave.png"/>
                <RibbonButton x:Name="btnRibbon2" Label="Open" LargeImageSource="Images/load.png"/>
            </RibbonGroup>
            <RibbonGroup x:Name="rbnGr2" Header="New group">
                <RibbonButton x:Name="btnRibbon3" Label="Font" LargeImageSource="Images/fonts.png"/>
                <RibbonButton x:Name="btnRibbon4" Label="Delete" LargeImageSource="Images/recycle_bin.png"/>
            </RibbonGroup>
        </RibbonTab>
        <RibbonTab x:Name="rbnTab2" Header="Tab2">
            <RibbonGroup x:Name="rbnGr3" Header="Other Group">
                <RibbonButton x:Name="btnRibbon5" Label="Play" LargeImageSource="Images/play.png"/>
                <RibbonButton x:Name="btnRibbon6" Label="List" LargeImageSource="Images/kmenuedit.png"/>
            </RibbonGroup>
            <RibbonGroup x:Name="rbnGr4" Header="What a group">
                <RibbonButton x:Name="btnRibbon7" Label="Sleep" LargeImageSource="Images/icon_sleep.png"/>
                <RibbonButton x:Name="btnRibbon8" Label="Add" LargeImageSource="Images/add.png"/>
            </RibbonGroup>
        </RibbonTab>
    </ribbon:Ribbon>

    <Grid>
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/>

    </Grid>
</DockPanel>

如果您想要隐藏<Ribbon.ApplicationMenu>,只需添加以下属性:<Ribbon.ApplicationMenu> <RibbonApplicationMenu Visibility="Collapsed"> </RibbonApplicationMenu> </Ribbon.ApplicationMenu>