Windows 7 Ribbon: Как указать «Четыре кнопки, две большие, две маленькие»? - PullRequest
3 голосов
/ 04 августа 2010

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

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

Large

enter image description here

Средний :

enter image description here

Маленький

enter image description here

Сейчас я использую предопределенный шаблон 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.

А у меня макет Четыре кнопки :

альтернативный текст http://i37.tinypic.com/15oupgk.jpg

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

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

enter image description here

А есть FiveButtons:

enter image description here

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

альтернативный текст http://i38.tinypic.com/30uy9ah.jpg

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

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

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

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Вы должны использовать 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.

1 голос
/ 19 ноября 2010

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

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

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

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

  • button1
  • button2
  • button3
  • button4

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

<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>

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

Шаблон small :

<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>
...