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>