2017-10-19 10 views
0

私たちは、所望の位置にコマンドバーのメニューを展開する方法..UWP C#の任意の位置にコマンドバーメニューを表示するには?

FrameworkElement senderElement = sender as FrameworkElement; 
myFlyout.ShowAt(sender as UIElement, e.GetPosition(sender as UIElement)); 

として所望の位置にフライアウトmenutを展開することができますが?回避策はありますか? IsOpenプロパティは、デフォルトの右/左/上のアプリケーションでのみコマンドバーを開きます。私は望むコントロール/ポジションの近くでそれを開きたい。

答えて

1

CommandBarは、指定された要素に関連して配置されたコマンドバーメニューを表示する方法を提供していません(ShowAt)。

あなたが所望の位置にコマンドバーのメニューを展開したい場合は、FlyoutAppBarButtonを置く代わりにCommandBar.SecondaryCommandsAppBarButtonを置くことができるはずです。

CommandBarのイベントOpeningを追加し、ShowAtメソッドを使用してイベントにFlyoutを表示することができます。 CommandBarIsOpenプロパティを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); 
} 
例えば

関連する問題