WPF Ribbon разворачивается и расширяется программно - PullRequest
7 голосов
/ 10 марта 2011

В последних библиотеках ленты WPF (октябрь 2010 г.) существует пункт меню, позволяющий свернуть / развернуть (или свернуть / развернуть, если хотите) элемент управления лентой.

Кто-нибудь знает, есть ли способ подключиться к событиям, которые управляют этим поведением, чтобы оно могло управляться программно из отдельного пользовательского интерфейса? Или, что еще лучше, есть ли способ заставить кнопку свертывания / развертывания отображаться на ленте, как это делают приложения Office 2010?

Ответы [ 3 ]

6 голосов
/ 14 марта 2011

Вы можете использовать логическое свойство IsMinimized в классе Ribbon, чтобы показать / скрыть саму ленту.Это свойство зависимости, поэтому вы можете привязать его значение для поддержки описанных вами сценариев.

Насколько я знаю, шаблон по умолчанию не имеет кнопки «показать / скрыть», как в Office, но онне должно быть слишком сложно изменить шаблон (используя Blend), чтобы добавить его.

1 голос
/ 22 декабря 2012

Если вам нужно знать, когда панель свернута (это происходит, когда вы дважды щелкаете заголовок вкладки), вы можете подключиться к событию 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);

Не так уж и шикарно, но выполняет свою работу.

0 голосов
/ 03 июля 2015

Добавьте кнопку переключения (простую кнопку и установите ее содержимое на v или ^ в зависимости от запрошенной операции), а затем вы можете использовать ContentControl в нажатии кнопки, чтобы выполнить ваше требование:

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

Использовать contentControl.Visibility = System.Windows.Visibility.Visible; чтобы максимизировать ленту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...