WPF功能区(System.Windows.Controls.Ribbon)包含许多控件,您可以将其添加到功能区中,这些控件具有“下拉”样式的行为,单击控件的主按钮将为您显示一个新区域。
示例:RibbonMenuButton,RibbonSplitButton,RibbonMenuButton,RibbonGallery等
但是,据我所知,所有这些内容都旨在向您显示用户从中进行选择的内容列表 。但是,相反,有什么方法可以显示一个不可选择的“面板”区域,可以在其上放置其他控件?
作为示例,这是MS Outlook的屏幕截图:
上方红色区域本身不是列表中的选择。相反,它具有一个自定义控件(用于选择表大小的东西)。
但是蓝色项目是可以选择的项目,其功能类似于传统菜单。
它是我感兴趣的红色区域。
(我不知道Outlook是否使用WPF功能区进行了编码,这一点都没有关系-我只是将其用作所寻找内容的说明。)
注意-我并不是要专门复制此Outlook表选择器,它只是您可以在下拉区域内使用不可选择的“面板”区域的方式的一个示例。
答案 0 :(得分:1)
Microsoft RibbonMenuButton / RibbonSplitButton 不支持下拉列表中的自定义控件。
即使我们设法通过更改 RibbonMenuItem / RibbonGalleryItem 的内容来做到这一点,我们仍然会在鼠标悬停时在这些控件周围获得选择装饰
最好的方法是使用 RibbonToggleButton 和 Popup Control 的组合,如下所示
然后你可以在弹出控件中放置任何你想要的自定义控件
<StackPanel Orientation="Vertical">
<RibbonToggleButton
x:Name="yAxis"
Label="Y Axis"
SmallImageSource="..\Images\ChartYAxis16.png"
LargeImageSource="..\Images\ChartYAxis32.png"
RibbonTwoLineText.HasTwoLines="True"
RibbonTwoLineText.PathData="M 0 0 L 2.5 3 L 5 0 Z">
</RibbonToggleButton>
<Popup
IsOpen="{Binding IsChecked, ElementName=yAxis}">
<mycontrols:AnyControl/>
</Popup>
</StackPanel>
当然,您可能需要通过取消选中切换按钮以编程方式关闭下拉列表,只要用户在切换按钮或下拉弹出窗口之外单击
答案 1 :(得分:0)
您可以将任何喜欢的东西放在功能区菜单按钮中。
例如:
<Ribbon>
<RibbonMenuButton Label="Button One">
<Grid Height="100" Width="200">
<TextBlock VerticalAlignment="Top" Text="AAAA"/>
<TextBlock VerticalAlignment="Bottom" Text="ZZZZ"/>
</Grid>
</RibbonMenuButton>
</Ribbon>
您要提取并更改功能区菜单按钮模板,以避免左侧的空白。