円形メニューを加工する
簡単にできたといっても、円盤状のものが表示されるだけでメニューとしてはまだ利用できないので、追加のXAMLを記述して円形メニューを完成させましょう。このサンプルでは次のような円形メニューを想定しています。
かなり複雑な動きをしていますが、どのようなXAMLを記述すればよいかを確認してみましょう。
1階層目の定義
C1RadialMenuタグの中にC1RadialMenuItemタグを列挙すると、それが1階層目として円形に配置されます。例えば、「元に戻す」「切り取り」「追加」「除外」「削除」「名前の変更」「プロパティ」「色」を列挙すると次のようになります。
<Xaml:C1RadialMenu x:Name="contextMenu" Offset="-130,0" Opened="contextMenu_Opened"> <Xaml:C1RadialMenuItem Header="UndoRedo" SelectedIndex="0" ShowSelectedItem="True" Command="{Binding UndoCommand, ElementName=page}"> <Xaml:C1RadialMenuItem Header="元に戻す" Command="{Binding UndoCommand, ElementName=page}"> <Xaml:C1RadialMenuItem.Icon> <TextBlock Text="" Style="{StaticResource TextIconStyle}" /> </Xaml:C1RadialMenuItem.Icon> </Xaml:C1RadialMenuItem> </Xaml:C1RadialMenuItem> <Xaml:C1RadialMenuItem AutoSelect="True" ShowSelectedItem="True" Header="Clipboard" SectorCount="8"> <Xaml:C1RadialMenuItem Header="切り取り"> <Xaml:C1RadialMenuItem.Icon> <TextBlock Text="" Style="{StaticResource TextIconStyle}" /> </Xaml:C1RadialMenuItem.Icon> </Xaml:C1RadialMenuItem> </Xaml:C1RadialMenuItem> : (中略) : </Xaml:C1RadialMenu>
2階層目の定義
1階層目のC1RadialMenuItemタグの中にC1RadialMenuItemを記述すると2階層目のメニューが定義できます。「色」「元に戻す」「切り取り」「追加」など円形の外枠に△が表示されているところがそれにあたります。
2階層目が定義されているメニュー項目をクリックやタップすると2階層目の表示に円形メニューが切り替わりメニューの中心は戻るという意味である「←」が表示されます。
: (中略) : <Xaml:C1RadialMenuItem AutoSelect="True" ShowSelectedItem="True" Header="Clipboard" SectorCount="8"> <Xaml:C1RadialMenuItem Header="切り取り"> <Xaml:C1RadialMenuItem.Icon> <TextBlock Text="" Style="{StaticResource TextIconStyle}" /> </Xaml:C1RadialMenuItem.Icon> </Xaml:C1RadialMenuItem> <Xaml:C1RadialMenuItem Header="コピー"> <Xaml:C1RadialMenuItem.Icon> <TextBlock Text="" Style="{StaticResource TextIconStyle}" /> </Xaml:C1RadialMenuItem.Icon> </Xaml:C1RadialMenuItem> <Xaml:C1RadialMenuItem Header="貼り付け"> <Xaml:C1RadialMenuItem.Icon> <TextBlock Text="" Style="{StaticResource TextIconStyle}" /> </Xaml:C1RadialMenuItem.Icon> </Xaml:C1RadialMenuItem> </Xaml:C1RadialMenuItem> : (中略) :
まとめ
ComponentOneの円形メニューはWindowsストアアプリらしいメニューです。ストアアプリではこの「らしさ」が重要であり、意識や視点が途切れないようなアプリを実現する1つの方法ともいえるでしょう。
通常、このようなUIは効果が高いことが分かっていても定義などが難しく、最終的には実現せずに終わってしまうケースが多いのです。しかし、ComponentOneを導入することでその難しさも隠れ、コストパフォーマンス的にも良い結果が得られるのではないでしょうか。