Windows 7 Ribbon: Как указать "Четыре кнопки, две большие, две маленькие"?

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

Этот макет поддерживает 3 разных размера: Большой, Средний и Маленький. В каждом случае это дает макеты:

Большой:

Средний:

Маленький:

Прямо сейчас я использую FourButtons предопределенный шаблон в моем файле XML как:

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon">
   ...
   <Application.Views>
      <Ribbon>
         ...
         <Ribbon.Tabs>
            <Tab CommandName="tabHome">
               <Group CommandName="grpActivity" SizeDefinition="FourButtons">
                  <Button CommandName="cmdStartWorking" />
                  <Button CommandName="cmdStopWorking" />
                  <Button CommandName="cmdPrint" />
                  <Button CommandName="cmdDuplicateTicket" />
               </Group>
            </Tab>
         </Ribbon.Tabs>

      </Ribbon>
   </Application.Views>
</Application>

И вы можете увидеть линию

<Group CommandName="grpActivity" SizeDefinition="FourButtons">

который определяет FourButtons шаблон макета.

И мой макет - FourButtons:

http://i37.tinypic.com/15oupgk.jpg

За исключением того, что я не хочу раскладку FourButtons, я хочу "Четыре кнопки, две большие, две маленькие".

Точно так же, как есть ThreeButtons-OneBigAndTwoSmall:

И есть FiveButtons:

я хочу FourButtons-TwoBigTwoSmall, который я могу вручную макет:

http://i38.tinypic.com/30uy9ah.jpg

К сожалению, декларативное программирование , разработанное Microsoft для создания пользовательских макетов, смущает меня как программиста.

Может кто-нибудь расшифровать пример декларативного языка внизу страницы и придумать шаблон FourButton-TwoBigTwoSmall?

Примечание: вся красивая графика, форматирование, ссылки и прочее используются для привлечения белок - тех, кто любит блестящую графику. И если вы действительно прочитали это далеко, я мог бы на самом деле использовать вашу помощь.

2 ответа

Решение

Вы должны использовать BigButtonsAndSmallButtonsOrInputs SizeDefinition

например

      <Group CommandName="cmdGroupBatch" SizeDefinition="BigButtonsAndSmallButtonsOrInputs">
        <ControlGroup>
          <Button CommandName="cmdButtonGetBatch" />
          <Button CommandName="cmdButtonPutBatch" />
        </ControlGroup>
        <ControlGroup>
          <Button CommandName="cmdButtonSaveBatch" />
          <Button CommandName="cmdButtonDiscartBatch" />
        </ControlGroup>
      </Group>

Просто проверьте, имеет ли ваша группа Size="Large" в вашем Tab.ScalingPolicy.

В конце концов я понял это.

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

<ControlNameMap>
   <ControlNameDefinition Name="button1"/>
   <ControlNameDefinition Name="button2"/>
   <ControlNameDefinition Name="button3"/>
   <ControlNameDefinition Name="button4"/>
</ControlNameMap>

Четыре кнопки имеют псевдонимы:

  • button1
  • button2
  • button3
  • button4

так что на них можно ссылаться в следующих определениях. Во-первых, это большой шаблон:

<GroupSizeDefinition Size="Large">
    <ControlSizeDefinition ControlName="button1" ImageSize="Large" IsLabelVisible="true" />
    <ControlSizeDefinition ControlName="button2" ImageSize="Large" IsLabelVisible="true" />
    <ColumnBreak ShowSeparator="true"/>
    <ControlSizeDefinition ControlName="button3" ImageSize="Large" IsLabelVisible="true" />
    <ControlSizeDefinition ControlName="button4" ImageSize="Large" IsLabelVisible="true" />
</GroupSizeDefinition>

который вызывает две большие кнопки, разделитель и еще две большие кнопки.

Средний шаблон:

<GroupSizeDefinition Size="Medium">
    <ControlSizeDefinition ControlName="button1" ImageSize="Large" IsLabelVisible="true" />
    <ControlSizeDefinition ControlName="button2" ImageSize="Large" IsLabelVisible="true" />
    <ColumnBreak ShowSeparator="true"/>
    <Row>
        <ControlSizeDefinition ControlName="button3" ImageSize="Small" IsLabelVisible="true" />
    </Row>
    <Row>
        <ControlSizeDefinition ControlName="button4" ImageSize="Small" IsLabelVisible="true" />
    </Row>
</GroupSizeDefinition>

вызывает две большие кнопки, разделитель, а затем две строки (каждая строка содержит одну маленькую кнопку).

Небольшой шаблон:

<GroupSizeDefinition Size="Small">
    <Row>
        <ControlSizeDefinition ControlName="button1" ImageSize="Small" IsLabelVisible="true" />
        <ControlSizeDefinition ControlName="button3" ImageSize="Small" IsLabelVisible="false" />
    </Row>
    <Row>
        <ControlSizeDefinition ControlName="button2" ImageSize="Small" IsLabelVisible="true" />
        <ControlSizeDefinition ControlName="button4" ImageSize="Small" IsLabelVisible="false" />
    </Row>
</GroupSizeDefinition>

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


Объединяем все вместе:

<Group CommandName="grpActivity" >
    <SizeDefinition>
        <ControlNameMap>
            <ControlNameDefinition Name="button1"/>
            <ControlNameDefinition Name="button2"/>
            <ControlNameDefinition Name="button3"/>
            <ControlNameDefinition Name="button4"/>
        </ControlNameMap>
        <GroupSizeDefinition Size="Large">
            <ControlSizeDefinition ControlName="button1" ImageSize="Large" IsLabelVisible="true" />
            <ControlSizeDefinition ControlName="button2" ImageSize="Large" IsLabelVisible="true" />
            <ColumnBreak ShowSeparator="true"/>
            <ControlSizeDefinition ControlName="button3" ImageSize="Large" IsLabelVisible="true" />
            <ControlSizeDefinition ControlName="button4" ImageSize="Large" IsLabelVisible="true" />
        </GroupSizeDefinition>
        <GroupSizeDefinition Size="Medium">
            <ControlSizeDefinition ControlName="button1" ImageSize="Large" IsLabelVisible="true" />
            <ControlSizeDefinition ControlName="button2" ImageSize="Large" IsLabelVisible="true" />
            <ColumnBreak ShowSeparator="true"/>
            <Row>
                <ControlSizeDefinition ControlName="button3" ImageSize="Small" IsLabelVisible="true" />
            </Row>
            <Row>
                <ControlSizeDefinition ControlName="button4" ImageSize="Small" IsLabelVisible="true" />
            </Row>
        </GroupSizeDefinition>
        <GroupSizeDefinition Size="Small">
            <Row>
                <ControlSizeDefinition ControlName="button1" ImageSize="Small" IsLabelVisible="true" />
                <ControlSizeDefinition ControlName="button3" ImageSize="Small" IsLabelVisible="false" />
            </Row>
            <Row>
                <ControlSizeDefinition ControlName="button2" ImageSize="Small" IsLabelVisible="true" />
                <ControlSizeDefinition ControlName="button4" ImageSize="Small" IsLabelVisible="false" />
            </Row>
        </GroupSizeDefinition>
    </SizeDefinition>

    <Button CommandName="cmdStartWorking" />
    <Button CommandName="cmdStopWorking" />
    <Button CommandName="cmdPrint" />
    <Button CommandName="cmdDuplicateTicket" />
</Group>
Другие вопросы по тегам