我正在尝试为工具栏创建一些下拉菜单,并希望它们看起来像Word中的页面布局下拉菜单(例如“方向”和“大小”菜单)。
我尝试使用ComboBox进行此操作,但我无法弄清楚如何显示选项名称,而不是ComboBox顶部的选定项目。是否可以让ComboBox在顶部显示您想要的内容?
我是否应该尝试使用ComboBox执行此操作,还是有更好的方法来解决此问题?
编辑:看起来我需要一个Ribbon控件。我可以用ComboBox制作一个简单的吗?看起来我很接近,我只需要能够在ComboBox中显示一个类别而不是所选项目。
答案 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代码来使用功能区的示例。一旦你习惯它,这很容易。
然后将此命名空间添加到xaml文件中:
现在使用此代码模板:
<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>