【问题标题】:WPF Ribbon collapse and expand programmaticallyWPF 功能区以编程方式折叠和展开
【发布时间】:2011-03-09 22:05:03
【问题描述】:

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

有谁知道是否还有一种方法可以挂钩控制此行为的事件,以便可以从单独的 UI 以编程方式对其进行控制? 或者,更好的是,有没有办法像 2010 Office 应用程序那样让折叠/展开按钮显示在功能区中?

【问题讨论】:

    标签: c# .net wpf ribbon


    【解决方案1】:

    您可以使用 Ribbon 类上的布尔属性 IsMinimized 来显示/隐藏功能区本身。它是一个依赖属性,因此您可以绑定到它的值以支持您描述的场景。

    据我所知,默认模板没有像 Office 那样的显示/隐藏按钮,但修改模板(使用 Blend)添加一个应该不会太难。

    【讨论】:

    • 谢谢。我已经利用了该属性以及功能区本身的 SizeChanged 事件。我可能会推迟修改模板。
    【解决方案2】:

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

    DependencyPropertyDescriptor.FromProperty(Ribbon.IsMinimizedProperty, typeof(Ribbon)) .AddValueChanged(ribbon, (o, args) => /* your code here */);

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

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

    不是那么花哨,但可以完成工作。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 1970-01-01
        • 2012-07-01
        • 2015-08-19
        • 2017-05-07
        • 2014-12-18
        • 1970-01-01
        • 2012-08-31
        • 2010-10-29
        相关资源
        最近更新 更多