WPF Ribbon如何在程序中实现折叠和展开

8

最新的(2010年10月)WPF Ribbon库中,存在一个菜单项来最小化/最大化(或折叠/展开,如果您喜欢)功能区控件。

有人知道是否还有一种方法可以钩入控制此行为的事件,以便可以从单独的UI程序控制它吗? 或者,更好的是,是否有一种方法可以在功能区中显示折叠/展开按钮,就像2010年Office应用程序一样?

3个回答

7
你可以使用Ribbon类的布尔属性IsMinimized来显示/隐藏功能区。它是一个依赖属性,因此您可以绑定其值以支持您描述的情况。
据我所知,默认模板没有像Office那样的显示/隐藏按钮,但使用Blend修改模板以添加一个按钮不应该太难。

谢谢。我已经利用了那个属性和菜单栏本身的SizeChanged事件。 我可能会暂时不修改模板。 - Mark Atkinson

1

如果您需要知道何时将栏最小化(当您双击选项卡标题时会发生这种情况),则可以挂钩到IsMinimizedChanged事件,但是...它丢失了。 希望它是一个DependencyProperty,因此您可以成功地挂钩到任何DependencyProperty更改,如下所示:

DependencyPropertyDescriptor.FromProperty(Ribbon.IsMinimizedProperty, typeof(Ribbon)) .AddValueChanged(ribbon, (o, args) => /* 在此处编写您的代码 */);

我想要做的事情(因此来到这里)是在双击标题时防止其最小化,因此我最终使用了以下代码:

DependencyPropertyDescriptor.FromProperty(Ribbon.IsMinimizedProperty, typeof(Ribbon)) .AddValueChanged(ribbon, (o, args) => ribbon.IsMinimized = false);

虽然不太花哨,但能完成工作。


0

添加一个切换按钮(简单按钮并根据所请求的操作设置其内容为v或^),然后您可以在按钮单击中使用ContentControl来满足您的要求:

     ContentControl contentControl = FindVisualChildataBankyName<ContentControl>(rbnName, "mainItemsPresenterHost");
     contentControl.Visibility = System.Windows.Visibility.Collapsed;

使用 contentControl.Visibility = System.Windows.Visibility.Visible; 来最大化功能区。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接