レイアウトを定義する SizeDefinition と ScalingPolicy : Windows リボンフレームワーク

コントロールのレイアウトを定義する SizeDefinition と ScalingPolicy

リボンフレームワークにおいて、コントロールのレイアウトは XAML の SizeDefinition と ScalingPolicy で行います。

そう言っても、ピンと来ないかもしれませんので、具体的な例を見てみましょう。 以下の二つの UI は ScalingPolicy を除いて全く同様のソースコードで出来ています。 スプリットボタン1個と、普通のボタンを2個並べています。

こちらは SizeDefinition が ThreeButtons-OneBigAndTwoSmall で、ScalingPolicy が Medium です。

一方、こちらは SizeDefinition が同じく ThreeButtons-OneBigAndTwoSmall で、ScalingPolicy が Large です。

リボンフレームワークではこのように、XAML による UI の定義方法を変えるだけで、 UI の表示方法が簡単に変更できます。

事前定義の SizeDefinition と ScalingPolicy

SizeDefinition には「カスタム」レイアウトと、「事前に定義された」 レイアウトの二種類あり、 上で出てきた ThreeButtons-OneBigAndTwoSmall というのは、リボンフレームワークで事前に定義された SizeDefinition です。 他にも事前定義された SizeDefinition は多数あります。

上で例に取った ThreeButtons-OneBigAndTwoSmall のように、リボンフレームワークで定義されたレイアウトが多数あります。 奇をてらったレイアウトを行わないのであれば、基本的にはこの事前定義のレイアウトを選択してください。

SizeDefinition と ScalingPolicy の組み合わせ一覧については、MSDN の記事をみてください。 あまりに多いのでここでは紹介しません。

具体例として、次の UI を考えます。

ここではひとつのスプリットボタン (Circle) と三つのボタン (New, Save, Exit) が配置されています。 これらを上のスクリーンショットのように、Circle だけ大きなボタン、残りを小さくして並べる、というように表示したい場合は、 どのようにしたらよいでしょうか。

上記の MSDN 文書を参照すると、SizeDefinition を FourButtons、ScalingPolicy にてサイズを Medium とすれば、 同様のレイアウトになることがわかります。これらを XAML で指定すればよいのです。

実際の XAML マークアップは次のようになります。マークアップ以外のプログラムコードについては、 Windows リボンフレームワークの概要とスケルトンプログラムの作成 を参照してください。

<Application.Views>
  <Ribbon>
    <Ribbon.ApplicationMenu>
      <ApplicationMenu>
        <ApplicationMenu.RecentItems>
          <RecentItems CommandName="cmdMRUList" MaxCount="10" />
        </ApplicationMenu.RecentItems>
        <MenuGroup Class="MajorItems">
          <Button CommandName="cmdExit"/>
        </MenuGroup>
      </ApplicationMenu>
    </Ribbon.ApplicationMenu>
    <Ribbon.Tabs>
      <Tab CommandName="cmdTab1">
        <Tab.ScalingPolicy>
          <ScalingPolicy>
            <ScalingPolicy.IdealSizes>
              <Scale Group="cmdGroup1" Size="Medium"/>
            </ScalingPolicy.IdealSizes>
            <Scale Group="cmdGroup1" Size="Small"/>
            <Scale Group="cmdGroup1" Size="Popup"/>
          </ScalingPolicy>
        </Tab.ScalingPolicy>
        <Group CommandName="cmdGroup1" SizeDefinition="FourButtons">
          <SplitButton>
            <SplitButton.MenuGroups>
              <MenuGroup CommandName="cmdDraw" Class="MajorItems">
                <Button CommandName="cmdCircle"/>
                <Button CommandName="cmdRect"/>
              </MenuGroup>
            </SplitButton.MenuGroups>
          </SplitButton>
          <Button CommandName="cmdNew"/>
          <Button CommandName="cmdSave"/>
          <Button CommandName="cmdExit"/>
        </Group>          
      </Tab>
    </Ribbon.Tabs>
  </Ribbon>
</Application.Views>

このコードでは cmdGroup1 という名前の付いた Group の SizeDefinition が FourButtons として定義されています。 そして、ScalingPolicy については ScalingPolicy.IdealSizes の下に、理想的なサイズとして Medium が設定されています。 これによって、事前定義の SizeDefinition の 「FourButtons」の「Medium」 サイズが選択されることになります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説