Explorer ui ribbon что это
Мистеру Ривьере удалось извлечь из недр системных библиотек одной из последних сборок Windows 8 ресурсы, которые отключены в данной сборке, однако представляют большой интерес для общественности. В частности, удалось извлечь изображение нового экрана приветствия Windows 8, выполненного в стиле интерфейса Metro UI. Кроме того, второй большой находкой стал кардинально переработанный интерфейс проводника Windows – теперь в нём появилось ленточное меню, как на всех современных приложениях софтверного гиганта.
Экран приветствия (Welcome screen) в Windows 8
Если поближе рассмотреть новый "welcome screen" Windows 8, то становится очевидным явное сходство с экраном блокировки смартфонов Windows Phone 7. Согласно имеющейся информации, каким-либо образом настраивать данный экран пользователь не сможет. Ему будет доступна лишь возможность смены фонового рисунка, и, возможно, кое-какие дополнительные действия касающиеся планшетных компьютеров. В заблокированном режиме на экране приветствия будут отображаться текущие время и дата. Возможно, со временем в Редмонде добавят на этот экран дополнительный функционал, и он станет больше походить на экран блокировки смартфонов Windows Phone 7.
Общий вид проводника Windows 8 (Windows Explorer) с интерфейсом Ribbon UI
Что же касается проводника Windows (Windows Explorer, если угодно), то ленточное меню Ribbon UI добралось и до него. Впервые это нововведение софтверный гигант представил в пакете Microsoft Office 2007. С тех пор Ribbon UI "поселился" во многих продуктах Microsoft, включая семейство продуктов Windows Live Essentials, WordPad, Paint, ну и Office 2010, конечно.
Различные варианты вкладок ленточного меню в Windows Explorer
Из утёкших изображений видно, что в Редмонде всё ещё раздумывают о полезности такого нововведения, и, очевидно, в дальнейшем этот интерфейс могут ожидать серьёзные изменения. Вероятней всего пользователь Windows 8 сможет скрыть ленточное меню Ribbon UI, если оно ему не понравится; также есть вероятность, что Ribbon UI в проводнике будет доступен лишь на некоторых типах компьютеров (да, речь снова о планшетах). Очевидно одно – новый Ribbon UI соберёт в себе все самые удачные наработки, которые существуют у Редмонда на данный момент. К примеру – меню Файл. Возможно, оно станет аналогичным тому, что мы сейчас можем увидеть в Office 2010: расширенный набор функций, но вид в стиле Metro UI.
Новое меню Файл в Windows Explorer
На скриншоте, на котором изображено меню Файл, можно заметить одно нововведение, сильно бросающееся в глаза – пункт меню Sync, который, по всей видимости, будет служить для синхронизации файлов между разными компьютерами пользователя (аналог существующего приложения Live Mesh). Также на одном из скриншотов можно заметить команду Share – вероятно она будет привязана к облачному сервису Live SkyDrive, который позволяет получать доступ к содержимому облачного хранилища из любой точки планеты.
Скрытый интерфейс Ribbon UI в проводнике Windows 8
Среди нововведений также заметна кнопка "вверх", которую убрали из Windows Explorer с появлением ОС Windows Vista.
Как видите, изменений довольно много даже не смотря на то, что процесс разработки новой ОС находится далеко от завершения. Ещё рано делать какие либо выводы, однако уже сейчас намечается тенденция к более тесной интеграции LIVE сервисов с новой Windows 8.
Вид вкладок Ribbon UI из библиотеки Изображения в Windows Explorer
Ок, продолжаем наше погружение в системные ресурсы Windows 8. На этот раз Рафаэль Ривьера вместе с Полом Тарротом обнаружили в недрах новой ОС элементы ленточного интерфейса, дебютировавшего еще в Office 2007, в Windows Explorer.
Когда Microsoft представила пользовательский интерфейс Ribbon в качестве замены изживших себя меню и панели инструментов Microsoft Office 2007, многие были шокированы. Это изменение было довольно смелым для такого зрелого программного продукта и полностью нивелировало укоренившиеся навыки. Но пользовательский интерфейс Ribbon является инновационным решением, которое позволяет сделать ранее скрытые функции более заметными.
Он был настолько успешен, что Microsoft начала добавлять его в другие продукты, в том числе Windows Live Essentials и приложения Windows 7, включая Paint и WordPad. В Windows 8 использование Ribbon UI станет еще более заметным: ленты появятся в Windows Explorer. В ранних сборках Windows 8 пользовательский интерфейс Ribbon закончен только наполовину и, откровенно говоря, представляет сомнительную ценность. Вообще, использование Ribbon UI в Windows Explorer - это, на самом деле, довольно спорный вопрос, который, видимо, до сих пор не решен в Редмонде.
В Windows 8 программная оболочка Windows Explorer "щеголяет" новым пользовательским интерфейсом Ribbon. Очевидно, что все иконки, показанные здесь, являются всего лишь заглушками.
Если Microsoft одобрит это изменение, Ribbon UI заменит меню и панель инструментов в Explorer нынешней Windows, и, как и в Office, он сделает заметными намного больше возможностей, хотя и за счет экранного пространства.
Различные вкладки Explorer
Как и в Office 2010, существуют различные контекстуальные вкладки, которые также могут появиться, в том числе Library Tools (при просмотре Libraries), Picture Tools (когда выбран один или несколько файлов изображений) и Disk Tools (в разделе Computer).
Примеры контекстуальных лент в программной оболочке Windows 8
Вы также можете скрыть ленту, что объяснило бы, почему в строке состояния дублируется несколько вариантов стиля отображения. Другая теория гласит, что эти пункты размещаются там для того, чтобы адаптировать другие типы пользовательского интерфейса, таких как Aero Lite - прежнее название Aero Basic - и, Immersive, пользовательский интерфейс, основанный на "мозаике", который в свою очередь базируется на Metro UI из Windows Phone.
Скрытый Ribbon (с динамическими вкладками Disk Tools), и крупный план основанного на статусе переключателя стилей отображения
И, как и в других приложениях, в ленте в Explorer предусмотрено новое меню File, которое, как и в Office 2010, является довольно обширным.
Меню Find
По нашему мнению, Ribbon UI в текущем его виде является довольно непривлекательной разработкой. Неясно, намерена ли Microsoft продвигать этот пользовательский интерфейс "как есть", или же он будет появляться только в определенных типах пользовательского интерфейса. Однако, исходя из увиденного, похоже, что в наличии будет переключатель, который позволит отключить ленту. Так что если вам не понравится Ribbon UI в Windows Explorer, скорее всего, вы сможете отключить его.
В операционной системе Windows 11 появилось много обновлений пользовательского интерфейса и серьезных изменений дизайна, заметно отличающихся от предыдущих версий системы. Был переработан внешний вид многих приложений, в том числе была затронута панель инструментов Проводника.
Проводник Windows — главный инструмент по управлению файлами по умолчанию в операционной системе. При работе с файловым менеджером в Windows 11, пользователь замечает, что в приложении исчезла классическая лента Проводника, расположенная в верхней части окна системного средства.
Сразу бросается в глаза минимализм новой версии файлового менеджера. Microsoft удалила из Проводника панель инструментов с вкладками. С помощью удаленных инструментов пользователь получал доступ ко многим функциям ОС непосредственно из Проводника, без входа в параметры Windows.
Прежний интерфейс заменен единой панелью инструментов, на которой находятся несколько параметров, с которыми можно взаимодействовать для решения тех или иных задач. К сожалению, из панели инструментов исчезли многие параметры, благодаря которым пользователь мог быстро выполнить необходимые действия.
Налицо некий регресс многих функций Проводника, и это опечалило многих пользователей. На изображении ниже показан новый Проводник Windows 11.
Так выглядит старый Проводник Windows 11, в котором намного удобнее выполнять различные файловые операции. На изображении видно, что в классическом виде снова появились вкладки в Проводнике Windows 11 с доступом к различным функциям системы.
Помимо вышеперечисленных изменений переделке подверглось контекстное меню Проводника. О решении этой проблемы есть другая статья на сайте.
Возможно, внешний вид новой версии файлового менеджера и красивее, но там отсутствуют некоторые важные функции. В связи с этим, у многих пользователей возникает вопрос о том, как венуть в Windows 11 Проводник, сделав его таким, как в Windows 10.
В этой статье находятся инструкции о том, как изменить внешний вид Проводника в Windows 11 несколькими способами. В результате выполнения операций, вы сможете получить Проводник Виндовс 10 в Виндовс 11. Это касается отображения вкладок и панели инструментов на ленте в окне приложения.
Выводы статьи
В операционной системе Windows 11 значительно переработали внешний вид многих системных средств и инструментов. В частности, это касается интерфейса Проводника — встроенного файлового менеджера, с которым часто взаимодействуют пользователи на компьютере.
В новом Проводнике отсутствует классическая ленточная панель инструментов с вкладками, а это уменьшает функциональные возможности приложения. Пользователи могут вернуть старое классическое меню в Проводник Windows 11, воспользовавшись одним из предложенных способов: с помощью командной строки, готового REG-файла, внесением изменений в редактор реестра вручную, или в программе Winaero Tweaker.
В предыдущей статье мы научились создавать на ленте меню приложения с несколькими видами кнопок, попутно рассмотрев, для чего каждый из "необычных" видов кнопок используется. Кроме того, было сделано замечание касаемо метода DestroyFramework ленты: мы рассмотрели случай, когда его использование в сочетании со стандартной функцией закрытия формы WinForms вызывает ошибку, и выяснили, как этой ошибки можно избежать.
Сегодня мы рассмотрим ещё несколько элементов управления ленты, как-то: вкладки (Tabs) с группами (Groups), кнопка справки (HelpButton), счётчик (Spinner) и раскрывающийся (или выпадающий) список (ComboBox).
Вкладки, группы и кнопка справки
Результатом данной части статьи будет очередное приложение-образец с именем "04-TabGroupHelp". Выглядит оно следующим образом:
Кнопки, кнопки, кнопки
Так что же есть вкладки? Это всего лишь контейнеры для других элементов управления. В этом примере мы будем использовать только кнопки. Я рассмотрю другие типы контролов в следующих статьях.
Каждая вкладка может содержать несколько групп, которые являются просто логическим разделением элементов на вкладке, в данной статье — кнопок.
Что такое кнопка справки? Ещё одна кнопка. Из некоторых соображений у неё есть своё особое место и заранее заданный значок (см. на правую сторону изображения).
Использование вкладок и групп
Секция команд разметки ленты остаётся всё той же — просто список элементов, сопоставляющих обозначения, используемые программистом, и идентификаторы, используемые фреймворком ленты. А также некоторые строковые ресурсы и точечные рисунки.
Как всегда, всё интересное находится в секции представлений разметки:
iews>[/code]
В этой разметке я назначил две вкладки. На первой вкладке расположены две группы, на второй — одна. Я обозначил важные части разметки первой вкладки. К сожалению, в силу особенностей определения схемы (англ. schema definition — прим. переводчика) ленты, "страшная" часть должна располагаться перед "полезной".
"Полезная" часть:
Всего лишь простое назначение групп на вкладке и элементов управления внутри каждой группы. Единственная интересная вещь — это атрибут SizeDefinition в тэге Group. Это определение расположения контролов в группе. Вы можете описать собственные варианты расположения или использовать уже имеющиеся, которых обычно бывает вполне достаточно. Полный список (с удобными иллюстрациями) можно посмотреть в статье " Настройка ленты с помощью определений размеров (англ. Size Definitions — прим. переводчика) и политик масштабирования (англ. Scaling Policies — прим. переводчика) " на MSDN.
"Страшная" часть:
Чтобы понять эту часть, нужно знать, что одной из функций фреймворка ленты является возможность перераспределения ваших контролов на ленте в соответствии с имеющимся пространством. В основном лента обрабатывает это автоматически, но ей необходимо дать "подсказку", как следует распределять элементы, когда форма приложения становится всё меньше и меньше. Поэтому в "страшной" части мы сначала задаём идеальный размер для каждой группы. Размер может принимать одно из четырёх значений: Large (большой), Medium (средний), Small (маленький) и Popup (всплывающий). "Popup" означает, что вся группа должна сжиматься в один значок и "всплывать" при щелчке по нему.
После назначения идеального размера для группы, вы можете указать порядок уменьшения масштаба, то есть какая группа должна масштабироваться первой. Таким образом, можно сделать так, чтобы наиболее важные контролы приложения были видны лучше, чем менее важные.
Код для работы с этими кнопками такой же, как в предыдущей статье. Просто обрабатывайте событие OnExecute соответствующих кнопок.
Использование кнопки справки
Чтобы использовать кнопку справки, просто добавьте следующие строки в секцию представлений разметки ленты:
[code]
.
Элемент управления "счётчик"
Элемент управления "счётчик" (Spinner) — контрол, который содержит десятичное значение (как тип double, только с более высоким разрешением). Элемент состоит из поля для редактирования и двух кнопок, для увеличения и уменьшения. Давайте попробуем его в действии:
Свойства счётчика
Каждый элемент управления ленты обладает свойствами, которые определяют его внешний вид и поведение. Вот краткое перечисление свойств счётчика, разделённое на логические группы:
Свойства счётчика, относящиеся к его значению
- Decimal Value — Текущее десятичное значение счётчика.
Идентификатор свойства: UI_PKEY_DecimalValue - Increment — Размер шага при нажатии на кнопки увеличения / уменьшения значения.
Идентификатор свойства: UI_PKEY_Increment - Max Value — Максимальное значение, которое можно задать на счётчике.
Идентификатор свойства: UI_PKEY_MaxValue - Min Value — Минимальное значение, которое можно задать на счётчике.
Идентификатор свойства: UI_PKEY_MinValue
Замечание: Когда вы используете десятичные значения в Ribbon Framework, вы должны также использовать реализацию PropVariant, поддерживающую десятичные значения. Подробней об этом написано здесь: Задание десятичных значений в PropVariant .
Свойства счётчика, относящиеся к его оформлению
- Decimal Places — Количество цифр после запятой.
Идентификатор свойства: UI_PKEY_DecimalPlaces - Format String — Единицы измерения значения. На предыдущем изображении это "м" — метры.
Идентификатор свойства: UI_PKEY_FormatString - Representative String — Строка, представляющая общее значение для счётчика. Используется для вычисления ширины счётчика, поэтому следует задавать здесь самую длинную строку, которая будет выводиться. Заметьте, что это не обязательно должно быть действительное значение, можно задать что-нибудь вроде: "XXXXXXXX".
Идентификатор свойства: UI_PKEY_RepresentativeString
Общие параметры оформления
- Keytip — Клавиатурный ускоритель ("горячая клавиша") для данной команды в фреймворке ленты (показывается при нажатии ALT в приложении с лентой).
Идентификатор свойства: UI_PKEY_Keytip - Label — Метка для данной команды. Обычно появляется рядом с назначенным элементом управления.
Идентификатор свойства: UI_PKEY_Label - Tooltip Title — Заголовок всплывающей подсказки для данной команды.
Идентификатор свойства: UI_PKEY_TooltipTitle - Tooltip Description — Текст всплывающей подсказки для данной команды.
Идентификатор свойства: UI_PKEY_TooltipDescription - Enabled — Флаг, показывающий, включён данный элемент управления или нет.
Идентификатор свойства: UI_PKEY_Enabled
Свойства изображений
- Large Image — Большое изображение для данной команды.
Идентификатор свойства: UI_PKEY_LargeImage - Small Image — Маленькое изображение для данной команды.
Идентификатор свойства: UI_PKEY_SmallImage - Large High Contrast Image — Большое изображение с высоким контрастом для данной команды.
Идентификатор свойства: UI_PKEY_LargeHighContrastImage - Small High Contrast Image — Маленькое изображение с высоким контрастом для данной команды.
Идентификатор свойства: UI_PKEY_SmallHighContrastImage
Использование счётчика — разметка ленты
Как всегда, команда должна быть определена:
[code]
[/code]
Секция представлений тоже простая:
[code]
Использование счётчика — код
Чтобы помочь нам управлять счётчиком, я создал вспомогательный класс, в котором выполняется вся работа, затрагивающая фреймворк ленты. Чтобы использовать его, создайте экземпляр RibbonSpinner, передав конструктору ссылку на экземпляр класса Ribbon и ID команды счётчика:
[code]private Ribbon _ribbon;
private RibbonSpinner _spinner;
public Form1()
{
InitializeComponent();
_ribbon = new Ribbon();
_spinner = new RibbonSpinner(_ribbon, (uint)RibbonMarkupCommands.cmdSpinner);
>[/code]
Теперь вы можете легко управлять свойствами счётчика, задавая их для экземпляра _spinner, например:
[code]private void InitSpinner()
{
_spinner.DecimalPlaces = 2;
_spinner.DecimalValue = 1.8M;
_spinner.TooltipTitle = "Высота";
_spinner.TooltipDescription = "Введите высоту в метрах.";
_spinner.MaxValue = 2.5M;
_spinner.MinValue = 0;
_spinner.Increment = 0.01M;
_spinner.FormatString = " м";
_spinner.RepresentativeString = "2.50 м";
_spinner.Label = "Высота:";
>[/code]
Использование элемента управления "счётчик" показано в приложении-образце "05-Spinner".
От переводчика: в заключении статьи смотрите очень важное замечание касательно счётчика.
Элемент управления "выпадающий список"
Элемент управления "выпадающий (или раскрывающийся) список" (ComboBox) ленты — по сути обычный контрол ComboBox, который мы все любим, но с дополнительной возможностью разделения элементов по категориям. Категория не является элементом и не может быть выбрана из списка. Она используется только для упорядочения элементов.
Свойства выпадающего списка, относящиеся к его значению
- Items Source — Список элементов ComboBox. Он реализует интерфейс IUICollection, каждый элемент которого относится к типу: IUISimplePropertySet. Об этом будет рассказано чуть позже.
Идентификатор свойства: UI_PKEY_ItemsSource - Categories — Список категорий. Также реализует IUICollection элементов IUISimplePropertySet.
Идентификатор свойства: UI_PKEY_Categories - Selected Item — Индекс выбранного элемента в выпадающем списке. Если ничего не выбрано, возвращает UI_Collection_InvalidIndex, то есть, грубо говоря, -1.
Идентификатор свойства: UI_PKEY_SelectedItem - String Value — Текущая строка в ComboBox. Это может быть строка, не являющаяся одним из элементов выпадающего списка, если его свойству IsEditable присвоено значение "true".
Идентификатор свойства: UI_PKEY_StringValue
Свойства выпадающего списка, относящиеся к его оформлению
- Representative String — Строка, представляющая общее значение для ComboBox. Используется для вычисления ширины выпадающего списка, поэтому следует задавать здесь самую длинную строку, которая будет выводиться. Заметьте, что это не обязательно должно быть действительное значение, можно задать что-нибудь вроде: "XXXXXXXX".
Идентификатор свойства: UI_PKEY_RepresentativeString
Использование выпадающего списка — разметка ленты
Как всегда, команда должна быть определена:
- CommandName — Имя команды, привязанной к данному выпадающему списку.
- IsAutoCompleteEnabled — Флаг, показывающий, дополнять ли слова, когда вы пишете.
- IsEditable — Флаг, показывающий, возможно ли свободное редактирование текста в ComboBox.
- ResizeType — Возможность изменения размера ComboBox. Может принимать значения NoResize или VerticalResize.
Использование выпадающего списка — код
По аналогии с элементом управления "счётчик", я создал вспомогательный класс для взаимодействия между выпадающим списком и фреймворком ленты. Чтобы использовать ComboBox, создайте экземпляр RibbonComboBox, передав конструктору ссылку на экземпляр класса Ribbon и ID команды списка:
[code]private Ribbon _ribbon;
private RibbonComboBox _comboBox2;
public Form1()
{
InitializeComponent();
_ribbon = new Ribbon();
_comboBox2 = new RibbonComboBox(_ribbon, (uint)RibbonMarkupCommands.cmdComboBox2);
_comboBox2.RepresentativeString = "XXXXXXXXXXX";
>[/code]
Замечание: Мы задаём свойство RepresentativeString ПЕРЕД инициализацией фреймворка ленты. Это делается в силу того, что по некоторым причинам фреймворк считывает это свойство только однажды, когда лента инициализируется. Это означает, что, если вы измените его после инициализации, результата не будет, поскольку фреймворк его более не считывает. Кстати говоря, согласно текущей документации фреймворка ленты, это свойство не является частью ComboBox, но, как упоминалось ранее, оно контролирует ширину выпадающего списка.
В следующем куске кода показано, как использовать другой вспомогательный класс, называющийся GalleryItemPropertySet. Этот класс предоставляет контейнер для свойств отдельного элемента в IUICollection.
Добавление категорий и элементов в выпадающий список производится таким образом:
[code]private void Form1_Load(object sender, EventArgs e)
{
_ribbon.InitFramework(this);
// задаём метку combobox2
_comboBox2.Label = "Расширенный список";
// задаём категории _comboBox2
IUICollection categories2 = _comboBox2.Categories;
categories2.Clear();
categories2.Add(new GalleryItemPropertySet() { Label="Категория 1", CategoryID=1 >);
categories2.Add(new GalleryItemPropertySet() { Label="Категория 2", CategoryID=2 >);
// задаём элементы _comboBox2
IUICollection itemsSource2 = _comboBox2.ItemsSource;
itemsSource2.Clear();
itemsSource2.Add(new GalleryItemPropertySet() { Label="Метка 1", CategoryID=1 >);
itemsSource2.Add(new GalleryItemPropertySet() { Label="Метка 2", CategoryID=1 >);
itemsSource2.Add(new GalleryItemPropertySet() { Label="Метка 3", CategoryID=2 >);
>[/code]
Замечание: Добавление элементов и категорий возможно только ПОСЛЕ того, как фреймворк ленты был инициализирован.
События IUICollection
Объекты, реализующие интерфейс IUICollection, обычно посылают событие OnChanged, вызываемое в случае, если коллекция была изменена: вставкой элемента, удалением элемента, заменой элемента, сбросом коллекции.
Это событие посылается с помощью стандартного механизма событий COM, а именно: IConnectionPointContainer, IConnectionPoint и Advise().
Ниже приведён пример его использования:
[code]private RegisterEvent()
{
_uiCollectionChangedEvent = new UICollectionChangedEvent();
_uiCollectionChangedEvent.Attach(_comboBox1.ItemsSource);
_uiCollectionChangedEvent.OnChanged +=
new UICollectionChangedEvent.OnChangedEventHandler(_ChangedEvent_OnChanged);
>
[/code]
[code]void _ChangedEvent_OnChanged(UI_CollectionChange action,
uint oldIndex, object oldItem,
uint newIndex, object newItem)
{
MessageBox.Show("Получено событие OnChanged. Действие = " + action.ToString());
>[/code]
Замечание: Для ComboBox события OnChanged нет. Только для интерфейса IUICollection, который полностью отличается от контрола. Сам выпадающий список имеет 3 события, Execute, Preview и CancelPreview. Событие Execute можно использовать как событие "изменения выбора". Об этом будет рассказано в будущих статьях.
Использование элемента управления "выпадающий список" показано в приложении-образце "06-ComboBox".
Заключение
Имеется крайне важное замечание, касающееся элемента управления "счётчик" (Spinner). Один из пользователей обнаружил ошибку во враппере Арика Познански. Заключается она в следующем: значение счётчика задаётся в коде приложения, затем во время работы приложения пользователь меняет его через сам счётчик на ленте, и при сворачивании и последующем разворачивании приложения значение счётчика возвращается к заданному в коде.
Также хотелось бы упомянуть COM-структуру PropVariant, о которой было сказано в замечании к свойствам элемента управления "счётчик". Её подходящая реализация уже включена Ариком в проект его библиотеки, поэтому беспокоиться об этом не стоит.
На этом пока всё.
В следующей статье мы рассмотрим, как можно изменять цвет ленты, а также поговорим об изображениях, используемых на ленте. Кроме этого, возможно, уже в следующей статье будет рассказано о различных видах галерей на ленте Windows.
В данной статье мы немного ближе познакомимся с тем, что же всё-таки представляет собой элемент управления Ribbon, а также узнаем краткую историю его развития. Затем мы попытаемся понять некоторые технические детали написания Ариком его враппера, и, наконец, перейдём непосредственно к созданию первого приложения с лентой.
В конце предыдущей статьи я указал список необходимого ПО, которое понадобится при разработке приложений WinForms с поддержкой Windows Ribbon. Здесь и далее я буду считать, что всё это ПО у нас уже имеется и готово к использованию.
История
Перед тем, как мы начнём программировать, давайте немного поговорим непосредственно о предмете.
Определение (с MSDN): "Windows Ribbon (Ribbon) Framework — это система представления команд с широкими возможностями, являющаяся современной альтернативой меню, панелям инструментов и области задач традиционных Windows-приложений."
В Office 2007 компания Майкрософт представила новый способ организации пользовательского интерфейса в приложении. Проблемой старого UI было то, что он был недостаточно гибким для представления всех возможностей Office. (На самом деле, люди просили добавить функции, которые уже имелись, но были "упрятаны" далеко в меню. )
Лента Microsoft Word 2007
Когда оказалось, что лента Office 2007 стала успешной, многие компании, занимающиеся разработкой UI, реализовали свои варианты лент для использования в приложениях. Ну а когда в Майкрософт осознали, что у них получилось нечто хорошее, они решили вывести ленту "в широкие массы".
Они выпустили 3 (!) версии ленты:
Ну, а что насчёт разработчиков управляемых WinForms-приложений? Они должны использовать третью, основанную на COM, версию. Поэтому цель этих статей — предоставить вам работающие примеры использования Windows Ribbon в приложениях WinForms.
Зачем использовать Windows Ribbon?
Заметьте: вопрос, на который я собираюсь ответить, звучит как "Зачем использовать ЭТОТ элемент управления Ribbon?", а не "Зачем ВООБЩЕ использовать элемент управления Ribbon?" Почему бы не использовать другие ленты? Существуют дюжины сторонних контролов; некоторые из них бесплатны.
Основная причина использования Windows Ribbon Framework - он разработан Майкрософт. Это означает:
- Поскольку он оригинальный, он обладает ВСЕМИ возможностями ленты, в отличие от других бесплатных или коммерческих Ribbon-контролов, в которых всегда найдутся "не реализованные" моменты.
- Он обладает ПОЛНОЙ поддержкой и интеграцией с интерфейсом Windows 7 и специальными возможностями. Просто представьте поддержку сенсорных экранов или совместимость с более высокими разрешениями (DPI) экрана.
К ленте относятся следующие файлы: UIRibbon.idl, UIRibbonKeydef.h и UIRibbonPropertyHelpers.h. Заметьте, что файл UIRibbon.h не интересен, поскольку он автоматически генерируется из UIRibbon.idl компилятором MIDL (англ. Microsoft Interface Definition Language — "язык описания интерфейсов Майкрософт" — прим. переводчика). Все эти файлы устанавливаются вместе с Windows 7 SDK.
Согласно условностям Windows API Code Pack, файл UIRibbon.idl был конвертирован в 4 различных файла:
- RibbonProperties.cs — содержит описание свойств Ribbon
- RibbonCOMGuids.cs — содержит относящиеся к Ribbon GUID'ы (англ. Globally Unique Identifier — "глобальный уникальный идентификатор" — прим. переводчика)
- RibbonCOMInterfaces.cs — содержит описание интерфейсов Ribbon
- RibbonCOMClasses.cs — содержит описание классов Ribbon
Эти файлы — преобразованные мной [Ариком] COM-интерфейсы и типы, используемые Windows Ribbon Framework. Эти файлы могут изменяться в процессе развития проекта, поскольку я наверняка допустил какие-то ошибки в преобразованиях и узнаю об этом, когда попытаюсь использовать какую-либо функцию.
(на момент написания этих статей библиотека Windows Ribbon for WinForms уже довольно длительное время находится в стадии релиза, поэтому если Ариком и будут исправляться какие-либо ошибки, то лишь незначительные. — прим. переводчика).
Как работает Windows Ribbon Framework?
Более подробно об этом написано на MSDN , я рекомендую это прочитать. Здесь я дам лишь краткое описание, чтобы мы просто друг друга понимали.
Для инициализации ленты в вашем приложении вам понадобится сделать следующее:
1. Спроектировать оформление ленты, используя разметку вида XAML.
2. Скомпилировать эту XAML-разметку с помощью Microsoft Ribbon Markup Compiler (компилятора разметки ленты), входящего в состав Windows 7 SDK.
3. Сделать бинарный вывод компилятора разметки (неуправляемым) ресурсом вашего приложения.
4. Во время загрузки приложения выполнить CoCreateInstance для класса UIRibbonFramework, который реализует интерфейс IUIFramework .
5. Вызвать framework.Initialize и передать ему ссылку на реализацию интерфейса IUIApplication вместе с HWND (англ. window handle — "описатель окна" — прим. переводчика) окна вашего приложения. Интерфейс IUIApplication отправляет обратный вызов фреймворку ленты, когда ему нужен описатель команды для её обработки (команды представлены кнопками, комбо-боксами и другими стандартными элементами управления).
6. Вызвать framework.LoadUI , который загружает предварительно скомпилированный ресурс и показывает ленту.
На данный момент IRibbonForm описан примерно так:
/
/// новая высота
void RibbonHeightUpdated(int newHeight);
>[/code]
Свойство WindowHandle используется для передачи описателя родительского окна фреймворку ленты.
Функция RibbonHeightUpdated используется, чтобы предупредить ваше приложение, что высота ленты изменилась. Поскольку высота ленты может динамически меняться (например, если вы измените размер окна до минимального, лента исчезнет), вам понадобится это предупреждение, чтобы соответствующим образом перераспределить элементы управления на форме (чтобы лента их не перекрыла).
Класс Ribbon на данный момент имеет 2 метода:
- InitFramework — получает вашу реализацию интерфейса IRibbonForm и имя ресурса, который будет использован для загрузки конфигурации ленты.
- DestroyFramework — код очистки, освобождает ресурсы Windows Ribbon Framework.
Эти методы должны быть вызваны, когда главная форма приложения загружается и закрывается соответственно.
Первое WinForms-приложение с лентой
Итак, давайте посмотрим, как использовать класс Ribbon для добавления поддержки в пустое WinForms-приложение. Результатом будет приложение-образец "01-AddingRibbonSupport".
Также добавьте к главной форме (form1.cs) следующие строки:
[code]using RibbonLib;
using RibbonLib.Interop;
public partial class Form1 : Form, IRibbonForm
{
private Ribbon _ribbon = new Ribbon();
. [/code]
Шаг 2 — Добавить XML-файл разметки ленты
Добавьте к проекту пустой файл с именем RibbonMarkup.xml. Вставьте в файл следующий текст:
[/code]
Щёлкните правой кнопкой мыши в окне редактирования RibbonMarkup.xml и нажмите "Свойства", затем задайте свойство "Схемы" равным: C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\UICC.xsd. Это [визуально] поможет вам в будущем при редактировании файла разметки ленты (попробуйте нажать Ctrl+Пробел в XML-редакторе, чтобы увидеть синтаксис разметки ленты).
Шаг 3 — Указать компилятору UI скомпилировать разметку в процессе построения
Войдите в: Свойства проекта -> События построения -> Командная строка события перед построением. Добавьте следующие 3 строки:
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\UICC.exe" "$(ProjectDir)RibbonMarkup.xml" "$(ProjectDir)RibbonMarkup.bml" /res:"$(ProjectDir)RibbonMarkup.rc"
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\rc.exe" /v "$(ProjectDir)RibbonMarkup.rc"
cmd /c "("$(DevEnvDir)..\..\VC\bin\vcvars32.bat") && ("$(DevEnvDir)..\..\VC\bin\link.exe" /VERBOSE /NOENTRY /DLL /OUT:"$(ProjectDir)$(OutDir)$(TargetName).ribbon.dll" "$(ProjectDir)RibbonMarkup.res")"
Пояснение: первая строка компилирует файл разметки ленты в сжатый бинарный формат, сопровождаемый маленьким RC-файлом, описывающим его.
Вторая строка создаёт нативный файл ресурса win32, который будет присоединён к нативным ресурсам проекта. Третья строка создаёт DLL-библиотеку с ресурсами из нативного файла ресурса win32.
Теперь скомпилируйте проект, чтобы ввести события перед построением.
Шаг 4 — Реализовать IRibbonForm
Чтобы ваша главная форма реализовывала интерфейс IRibbonForm, описанный в Ribbon.dll, выполните следующие инструкции:
• Фреймворку ленты необходим описатель окна главной формы для инициализации, отсюда:
[code]public IntPtr WindowHandle
{
get
{
return this.Handle;
>
>[/code]
• Лента частично перекроет вашу форму, если вы не напишете некоторый код, который будет перераспределять ваши контролы согласно текущей высоте ленты. Простой способ это сделать — добавить элемент управления SplitContainer на главную форму и задать ему следующие свойства (лучше задавать их в визуальном редакторе, а не в коде):
[code]this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.IsSplitterFixed = true;
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
this.splitContainer1.SplitterWidth = 1;[/code]
Теперь все, что вам нужно сделать, это расположить контролы вашей формы внутри panel2 SplitContainer'а и обновлять высоту panel1, когда меняется высота ленты (panel1 является "вместилищем" для ленты). SplitContainer будет автоматически перераспределять ваши контролы соответствующим образом. Настоящее обновление описывается в реализации IRibbonForm:
[code]public void RibbonHeightUpdated(int newHeight)
{
this.splitContainer1.SplitterDistance = newHeight;
>[/code]
Шаг 5 — Инициализировать Ribbon Framework при загрузке приложения
Чтобы инициализировать и уничтожить фреймворк ленты, обработайте события формы Load и FormClosed соответственно:
[code]private void Form1_Load(object sender, EventArgs e)
{
_ribbon.InitFramework(this);
>
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
_ribbon.DestroyFramework();
>[/code]
Наслаждайтесь своим первым WinForms-приложением с поддержкой Windows Ribbon!
Замечание: Если вы запускаете своё приложение и не видите ленту, попробуйте увеличить размер окна. Windows Ribbon обладает свойством не показываться, если размер окна слишком мал. К сожалению, стандартный размер окна в Visual Studio слишком мал.
Заключение
На этом пока всё. Теперь я хотел бы сделать несколько авторских замечаний.
3. В шаге, когда необходимо ссылаться на проект Ribbon.csproj, в оригинале было предложено ссылаться на саму библиотеку Ribbon.dll. Дело в том, что на данный момент Windows Ribbon for WinForms "поставляется" в виде не скомпилированного исходного кода, то есть библиотеку нужно также отдельно компилировать. Для упрощения можно просто добавить в решение проект библиотеки.
4. В третьем шаге у меня при компиляции возникли ошибки. Произошло это, возможно, потому, что в пути проекта были русские символы. Поэтому если у вас возникают ошибки при работе компиляторов UICC.exe или RC.exe, попробуйте убрать из пути проекта кириллицу.
Также в следующей статье будет некоторое замечание касаемо метода DestroyFramework. Сама же статья будет посвящена созданию меню приложения (Application Menu) с различными элементами управления.
Как вернуть старый Проводник Windows 11 в командной строке — 1 способ
Сначала рассмотрим первый способ, позволяющий изменить интерфейс верхней панели Проводника с помощью командной строки.
Выполните следующие действия:
-
.
- В окне интерпретатора командной строки введите команду:
- Нажмите на клавишу «Enter».
- Перезагрузите компьютер или выполните перезапуск Проводника.
В результате вы получите Проводник Windows 11 с ленточным интерфейсом и вкладками, похожий на тот, который использовался в Windows 10, Windows 8.1, Windows 8.
Как включить новый Проводник Windows 11
Вполне возможно, что вам комфортнее работать с новым интерфейсом Проводника. В этом случае, вы можете вернуть новый интерфейс панели инструментов для встроенного файлового менеджера Windows 11.
Чтобы отключить ленточную панель в Проводнике, вам потребуется выбрать один из представленных ниже способов.
1 способ в командной строке:
- Вставьте следующий код в окно командной строки, запущенной от имени администратора.
- Далее нужно нажать на клавишу «Enter».
- Перезагрузите операционную систему для применения изменений или перезапустите Проводник.
2 способ с готовым REG-файлом:
- Используйте REG-файл «Disable File Explorer Ribbon Bar.reg» из архива, который вы скачали ранее.
- Щелкните по нему два раза левой кнопкой мыши.
- В открывшемся окне подтвердите слияние файла в системном реестре.
- Выполните перезапуск Проводника или перезагрузку ПК.
3 способ в редакторе реестра:
- Запустите редактор реестра.
- Пройдите по пути:
- Удалите раздел с именем:
- Выполните перезагрузку системы или перезапуск Проводника.
4 способ в Winaero Tweaker:
- В окне программы Winaero Tweaker, в разделе «Windows 11» нажмите на опцию «Enable Ribbon».
- В правой части окна приложения снимите галку в пункте «Enable the Ribbon UI in File Explorer».
- Потом нажмите на кнопку «Restart Explorer».
Как вернуть Проводник Windows 10 в Windows 11 в редакторе реестра — 3 способ
Пользователь может вручную самостоятельно создать параметр в системном реестре Windows 11, который включит отображение старой ленточной панели в Проводнике.
Выполните несколько последовательных действий
-
на компьютере.
- В окне «Редактор реестра» пройдите по пути:
- Найдите раздел с именем:
Если такого раздела нет, создайте его. Щелкните правой кнопкой мыши по «CLSID», в открывшемся меню выберите «Раздел», а затем присвойте этому разделу имя, указанное выше.
- Кликните по разделу правой кнопкой мыши, выберите сначала «Создать», потом «Раздел», чтобы создать новый подраздел.
- Задайте имя разделу «InprocServer32».
- В разделе «InprocServer32» дважды щелкните по значению «По умолчанию».
- В окне «Изменение строкового параметра» нажмите на кнопку «ОК», не внося никаких значений.
- Закройте окно редактора реестра.
- После этого нужно перезагрузить компьютер или перезапустить Проводник.
Как добавить ленточную панель в Проводник Windows 11 с помощью Winaero Tweaker — 4 способ
Winaero Tweaker — мощная бесплатная программа, предназначенная для оптимизации системы и изменения настроек внешнего вида Windows по предпочтениям пользователя. С помощью данного приложения можно добавить классическую ленточную панель инструментов в Проводник Windows 11.
Эта программа, разработанная Сергеем Ткаченко, имеет интерфейс на английском языке.
Как включить панель команд в Проводнике Windows 11 с помощью REG-файла — 2 способ
Выполнить подобную операцию можно с помощью готового REG-файлы, который применит необходимые изменения в системном реестре Windows.
- Скачайте архив с файлами по этой ссылке.
- Распакуйте ZIP-архив с помощью архиватора или средства системы.
- В папке находятся два REG-файла.
- Щелкните два раза левой кнопкой мыши по файлу «Enable File Explorer Ribbon Bar.reg».
- Подтвердите свои намерения на слияние файла с реестром в открывшемся окне.
- Перезагрузите ПК, чтобы изменения вступили в силу, или перезапустите Проводник.
Читайте также: