Выпущен релиз Microsoft Ribbon для WPF перевод

.NET*
Я рад известить вас о выпуске финальной версии Microsoft Ribbon для WPF.



Новый элемент управления совместим с WPF 3.5 SP1 и WPF 4. Он не является оберткой над неуправляемым кодом, а целиком написан на WPF, что означает полную совместимость с возможностями управления стилями WPF.


Шаблон приложения


Установщик содержит в себе новый шаблон приложения «WPF Ribbon Application» для Visual Studio.



После создания и запуска нового проекта, вы увидите заготовку для вашей ленты.



Вот так выглядит XAML код этой ленты:

<ribbon:Ribbon x:Name="Ribbon">

  <ribbon:Ribbon.ApplicationMenu>
    <ribbon:RibbonApplicationMenu SmallImageSource="Images\SmallIcon.png">
      <ribbon:RibbonApplicationMenuItem Header="Hello _Ribbon"
                       x:Name="MenuItem1"
                       ImageSource="Images\LargeIcon.png"/>
    </ribbon:RibbonApplicationMenu>
  </ribbon:Ribbon.ApplicationMenu>

  <ribbon:RibbonTab x:Name="HomeTab"
           Header="Home">
    <ribbon:RibbonGroup x:Name="Group1"
              Header="Group1">
      <ribbon:RibbonButton x:Name="Button1"
                 LargeImageSource="Images\LargeIcon.png"
                 Label="Button1" />
      <ribbon:RibbonButton x:Name="Button2"
                 SmallImageSource="Images\SmallIcon.png"
                 Label="Button2" />
      <ribbon:RibbonButton x:Name="Button3"
                 SmallImageSource="Images\SmallIcon.png"
                 Label="Button3" />
      <ribbon:RibbonButton x:Name="Button4"
                 SmallImageSource="Images\SmallIcon.png"
                 Label="Button4" />
      
    </ribbon:RibbonGroup>
    
  </ribbon:RibbonTab>
</ribbon:Ribbon>


* This source code was highlighted with Source Code Highlighter.


Окно содержащее ленту наследует от класса RibbonWindow. Этот класс позволяет работать с областью заголовка окна (которая не входит в ClientArea и является недоступной для отрисовки в обычном Window — прим. перев.) и отображать на ней такие контролы, как, например, панель быстрого доступа и заголовки контекстных вкладок. Вы можете не использовать этот класс, однако в таком случае вам будет недоступна работа с заголовком окна.

Новая лента содержит в себе все возможности, которые вы ожидали в ней найти: панель быстрого доступа, меню приложения, вспомогательные панели, расширенные подсказки, подсказки для быстрых клавиш, автоматическое изменение размеров и местоположения, вкладки, заголовки контекстных вкладок, поддержку aero и т.п.

Контекстные вкладки


Давайте добавим новую вкладки и вложим ее в группу контекстных вкладок (как, например, инструменты редактирования таблиц в Word). Вам необходимо добавить следующий код в XAML ленты:

<ribbon:RibbonTab x:Name="AwesomeTab"
         ContextualTabGroupHeader="Awesome Tools"
         Header="Really Awesome">
  <ribbon:RibbonGroup x:Name="Group2"
            Header="Group2">
    <ribbon:RibbonButton x:Name="Button21"
               LargeImageSource="Images\LargeIcon.png"
               Label="Button21" />
  </ribbon:RibbonGroup>

</ribbon:RibbonTab>
<ribbon:Ribbon.ContextualTabGroups>
  <ribbon:RibbonContextualTabGroup Header="Awesome Tools"
                   Visibility="Visible"
                   Background="Green" />
</ribbon:Ribbon.ContextualTabGroups>


* This source code was highlighted with Source Code Highlighter.




Обратите внимание на изменения в коде окна, для поддержки заголовка контекстной группы.

Панель быстрого доступа


Как вы и ожидали, лента поддерживает панель быстрого доступа. Код XAML:

<ribbon:Ribbon.QuickAccessToolBar>
  <ribbon:RibbonQuickAccessToolBar>
    <ribbon:RibbonButton x:Name="ButtonQ1"
               SmallImageSource="Images\SmallIcon.png"
               Label="ButtonQ1" />
    <ribbon:RibbonButton x:Name="ButtonQ2"
               SmallImageSource="Images\SmallIcon.png"
               Label="ButtonQ2" />
    <ribbon:RibbonButton x:Name="ButtonQ3"
               SmallImageSource="Images\SmallIcon.png"
               Label="ButtonQ3" />
  </ribbon:RibbonQuickAccessToolBar>
</ribbon:Ribbon.QuickAccessToolBar>

* This source code was highlighted with Source Code Highlighter.




На скриншоте видны две кнопки быстрого доступа и двойная стрелочка, сообщающая о том, что доступны еще несколько кнопок.

Команда разработчиков WPF Ribbon проделала большую работу при создании этого контрола. Он поддерживает дополнительные сценарии, необходимые при использовании его в широком круге задач. Также имеет место быть полная поддержка стиля пользовательских интерфейсов Windows 7. Приятно видеть что WPF Ribbon выпущен и доступен для использования в ваших проектах.

P.S. И да: RibbonButton поддерживает ICommand)

Ссылки:

+49
3 августа 2010, 10:50
60
Logonoff 33,4

комментарии (28)

0
access #
надо будет опробовать…
0
Sharomank #
Спасибо за хорошую новость, давно хотелось сделать ленту стандартными средствами WPF.
+2
paranoik #
красота!
в каком-нибудь новом приложении обязательно заюзаю
+3
novoselov #
Слишком долго ждали, чтобы теперь это стало заметным событием. :(
Насколька велика разница с Office WPF Ribbon Preview и Fluent Ribbon Control Suite?
+1
Logonoff #
Лучше поздно чем никогда)
К сожалению не работал с другими ribbon-контролами, поэтому ничего сказать не могу(
0
Nagg #
Надеюсь, что лучше, чем Fluent — мне лично он не понравился :-( (малость глюченный и не слишком местами красивый)
0
Hoobert #
Вообще они разные риббоны реализуют на сколько я понял. Майкрсофтовская версия взяла за основу самый последний скин из Windows 7 к в Paint или WordPad (может там и другие скины есть? я не пробовал еще), а Fluent Ribbon реализует из офиса. Чисто эстетически мне больше нравится Fluent Ribbon, да и вылизан он до последнего пискселя, чего не скажешь о риббоне на последнем скриншоте. Зеленая вкладка там не просто с радиальным градиентом должна быть, кнопки на панели быстрого доступа куда-то вниз и вбок уехали.
0
DangerT #
Там еще помимо этого такая куча косяков в визуальной оформлении, что ахнешь. Я этот рибон уже задействовал в текущем проекте, который до этого был ни их же версии но CTP — которая еще с круглой кнопкой была а-ля Office 2007. Кода пришлось перелопатить… Правда я к этому готов был — они предупреждали что RibbonCommand будет удален. Зато количество кода уменьшилось за счет выкидывания костылей к этому самому ихнему RibbonCommand, поскольку проект использует паттерн MVVM.
А с кнопкой меню риббона (синяя, самая первая) пришлось играть с Margin чтобы она выглядела как системная и не вылезала выше остальных вкладок… Короче ложанулись разработчики с этим контролом.

А вы Fluent Ribbon много использовали в работе? Он позволяет сделать такой же Workspace как в Office 2010?
0
DangerT #
Я имел ввиду новомодное меню риббона, занимающее всю рабочую область.
+1
AxisPod #
Радостная новость.
+1
vansickle #
А что там с лицензиями?
+1
Logonoff #
Стандартная «не дизассемблируй, не пиши вирусню», можно использовать в коммерческих целях.
0
StrangeAttractor #
Помню в лицензии к старому Microsoft-овскому ribbon-у для C++ ещё запрещалось использовать в программах, конкурирующих с MS Office, т.е. нельзя было встроить в свой текстовый редактор или почтовый клиент.
+1
LexRema #
Помоему, это касается любого риббона, даже разработанного самостоятельно. Ведь лицензирование проходит уже не столь реализации, а концепта риббона, который был придуман изначально для офиса.
0
DangerT #
Странно… Ведь Outlook вплоть до 2007 не использовал риббоны. Или это был задел на будущее? :)
+1
impwx #
Вот тут написано как воспользоваться Ribbon Control'ом в WinForms.

Мне лично больше нравится Ribbon из Janus Controls, но он платный :(
+1
LexRema #
не-не-не… Это только для смертников, этот контрол. У меня с ним студия падала в режиме дизайнера тучу раз.

Если хочется чего-либо более-менее приличного — www.qiosdevsuite.com/. Там бесплатная комерческая лицензия при условии регистрации. Это для WinForms.
0
impwx #
Спасибо, выглядит достаточно интересно, попробую на досуге.
+3
StrangeAttractor #
Вот бы в Моно всё это… Перешёл на Linux, и главное, чего мне здесь не хватает — это полноценных .Net и Visual Studio.
0
VasyaMobile #
А Backstage не планируется для выхода?
0
amilucky #
спасибо, хорошая новость!
0
GIum #
«Он не является оберткой над неуправляемым кодом, а целиком написан на WPF»

А разве на WPF нельзя писать неуправляемый код, только через .NET ???
+1
Logonoff #
Здесь имеется ввиду нечто другое: у контролов написанных на WPF может быть кардинальным образом изменен дизайн, у них используется WPF-овская система событий, потоков и т.п.
–1
Dennis #
Ну теперь пора уже и в Linux ленту принести. В Gnome например моя мечта))
0
VasyaMobile #
Как я понял Express не поддерживается. Обидно.
0
Vladek #
Предполагаю, что не поддерживаются только дизайнер и шаблоны проектов — это нисколько не мешает использовать ленту. Просто чуть больше ручной работы.
0
VasyaMobile #
Ну express это обычно для обучения. И без дизайнера этого рибона практически нет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.