CommandBar
は、指定された要素に関連して配置されたコマンドバーメニューを表示する方法を提供していません(ShowAt
)。
あなたが所望の位置にコマンドバーのメニューを展開したい場合は、Flyout
でAppBarButton
を置く代わりにCommandBar.SecondaryCommands
にAppBarButton
を置くことができるはずです。
CommandBar
のイベントOpening
を追加し、ShowAt
メソッドを使用してイベントにFlyout
を表示することができます。 CommandBar
のIsOpen
プロパティをtrue
に設定すると、Opening
イベントが発生します。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<CommandBar x:Name="MyCommandBar" Width="800" HorizontalAlignment="Center" VerticalAlignment="Center" Opening="MyCommandBar_Opening">
<CommandBar.Resources>
<Flyout x:Name="MyBtnFly" Placement="Right">
<StackPanel>
<AppBarButton x:Name="CommandBarAppBarButton" Icon="Like" Label="Like" />
<AppBarButton Icon="Dislike" Label="Dislike" />
</StackPanel>
</Flyout>
</CommandBar.Resources>
<AppBarToggleButton Icon="Shuffle" Label="Shuffle" />
<AppBarToggleButton Icon="RepeatAll" Label="Repeat" />
<AppBarSeparator/>
<AppBarButton Icon="Back" Label="Back" />
<AppBarButton Icon="Stop" Label="Stop" />
<AppBarButton Icon="Play" Label="Play" />
<AppBarButton Icon="Forward" Label="Forward" />
<CommandBar.Content>
<TextBlock Text="Now playing..." Margin="12,14"/>
</CommandBar.Content>
</CommandBar>
<TextBlock x:Name="MyText" Tapped="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Bottom" Text="Click"></TextBlock>
</Grid>
コードの背後にある:
private void Button_Click(object sender, TappedRoutedEventArgs e)
{
MyCommandBar.IsOpen = true;
}
private void MyCommandBar_Opening(object sender, object e)
{
FrameworkElement senderElement = MyText as FrameworkElement;
MyBtnFly.ShowAt(senderElement);
}
例えば