Лента WPF свертывается и расширяется программно

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

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


person Mark Atkinson    schedule 09.03.2011    source источник


Ответы (3)


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

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

person madd0    schedule 14.03.2011
comment
Спасибо. Я затронул это свойство, а также событие SizeChanged на самой ленте. Я, вероятно, воздержусь от изменения шаблона. - person Mark Atkinson; 17.03.2011

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

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

person Guillermo Ruffino    schedule 21.12.2012

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

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

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

person Community    schedule 03.07.2015