WPF 功能区 (System.Windows.Controls.Ribbon) 包含许多控件,您可以将这些控件添加到具有“下拉”样式行为的功能区,单击控件的主按钮会显示一个新区域。
示例:RibbonMenuButton , RibbonSplitButton , RibbonMenuButton , RibbonGallery等
但是,据我所知,所有这些都是为了向您显示一个列表,用户可以从中进行选择。但是,有没有办法显示一个不可选择的“面板”区域,可以在其上放置其他控件?
作为示例,以下是 MS Outlook 的屏幕截图:
上方的红色区域本身并不是列表中的选择。相反,它有一个自定义控件(表格大小选择器)。
但是蓝色项目是可选项目,其功能类似于传统菜单。
这是我有兴趣了解的红色区域。
(我不知道 Outlook 是否是使用 WPF 功能区编码的,这根本不重要 - 我只是用它来说明我正在寻找的内容。)
注意 - 我并不是专门尝试复制此 Outlook 表格选择器,它只是您可以在下拉区域中使用不可选择的“面板”区域的方式的示例。
最佳答案
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>
当然,您可能需要通过在用户单击切换按钮或下拉弹出窗口外部时取消选中切换按钮来以编程方式处理下拉列表关闭
关于wpf - 从 WPF 功能区创建下拉 'panel' 区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836366/