2

WPF 功能区 (System.Windows.Controls.Ribbon) 包含许多控件,您可以将这些控件添加到具有“下拉”样式行为的功能区中,单击控件的主按钮会显示一个新区域。

示例:RibbonMenuButtonRibbonSplitButtonRibbonMenuButtonRibbonGallery等。

但是,据我所见,所有这些都旨在向您显示用户从中进行选择的事物列表。但是,有没有办法显示一个不可选择的“面板”区域,可以在其上放置其他控件?

例如,下面是 MS Outlook 的屏幕截图:

在此处输入图像描述

上面的红色区域本身不是列表中的选择。相反,它有一个自定义控件(表格大小选择器)。

但蓝色项目是可选项目,其功能类似于传统菜单。

它是我有兴趣了解的红色区域。

(我不知道 Outlook 是否是使用 WPF 功能区编码的,这根本不重要 - 我只是用它来说明我在寻找什么。)


注意 - 我并没有试图专门复制这个 Outlook 表格选择器,它只是您可以在下拉区域中使用不可选择的“面板”区域的方式的一个示例。

4

2 回答 2

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>

在此处输入图像描述

当然,您可能需要通过在用户单击切换按钮或下拉弹出窗口外部时取消选中切换按钮来以编程方式处理下拉关闭

于 2021-06-08T13:12:20.303 回答
0

您可以将任何您喜欢的内容放入功能区菜单按钮中。

例如:

    <Ribbon>
        <RibbonMenuButton Label="Button One">
            <Grid Height="100" Width="200">
                <TextBlock VerticalAlignment="Top" Text="AAAA"/>
                <TextBlock VerticalAlignment="Bottom" Text="ZZZZ"/>
            </Grid>
        </RibbonMenuButton>
    </Ribbon>

您需要提取并更改功能区菜单按钮模板以避免左侧的间隙。

于 2019-04-24T18:50:45.617 回答