2010-12-19 8 views
4

しばらく検索しているにもかかわらず、このための良い文書を見つけるのが難しいです。コンテキストメニューを表示

私は、アプリケーションリストから開始画面にアプリケーションを固定するような、他のタップアンドホールドのコンテキストメニューで見られる動作を複製するコンテキストメニューをアプリケーションに追加したいと考えています。ここで

は私のコンテキストメニューです:

   <toolkit:ContextMenuService.ContextMenu> 
        <toolkit:ContextMenu x:Name="sectionContextMenu"> 
         <toolkit:MenuItem Header="Hide this section from this list" /> 
        </toolkit:ContextMenu> 
       </toolkit:ContextMenuService.ContextMenu> 

私はそれを示して作るにはどうすればよいですか?

+0

シンプルで簡単な方法は、Windowsの電話7 http://www.akiievolution.com/context-menu-for-windows-phone-7-in-silverlight-toolkit/ –

+0

チェックしてコンテキストメニューを使用するにはこの投稿:[WP7 ContextMenu in depth |パート1:主要な概念とAPI](http://windowsphonegeek.com/articles/WP7-ContextMenu-in-depth--Part1-key-concepts-and-API)これがあなたを助けてくれることを願っています。 –

答えて

7

コンテキストメニューは、ユーザーがタップして保持する要素にアタッチする必要があります。

<Border Margin="0,12" BorderBrush="{StaticResource PhoneForegroundBrush}" BorderThickness="2" Background="Transparent" VerticalAlignment="Center" Padding="16"> 
    <toolkit:ContextMenuService.ContextMenu> 
     <toolkit:ContextMenu x:Name="sectionContextMenu"> 
     <toolkit:MenuItem Header="Hide this section from this list" /> 
     </toolkit:ContextMenu> 
    </toolkit:ContextMenuService.ContextMenu> 
    <TextBlock Text="Tap and hold here to invoke a ContextMenu" Style="{StaticResource PhoneTextNormalStyle}"/> 
</Border> 

ユーザーがタップするだけでコンテキストメニューを呼び出し、このBorder要素の内容に保持することができます。

2

コンテンツに応じてアイテムごとに固有のコンテキストメニュー。

private ContextMenu CreateContextMenu(ListBoxItem lbi) 
{ 
    ContextMenu contextMenu = new ContextMenu(); 
    ContextMenuService.SetContextMenu(lbi, contextMenu); 
    contextMenu.Padding = new Thickness(0); 

    string item_1 = "item 1"; 
    if(lbi.Content is string) { 
     item_1 = lbi.Content as string; 
    } 
    contextMenu.ItemsSource = new List<string> { item_1, "item 2", "item 3" }; 
    contextMenu.IsOpen = true; 
    return contextMenu; 
} 

private void Results_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (Results.SelectedIndex == -1) return; 
    int index = Results.SelectedIndex; 

    ListBoxItem lbi = Results.ItemContainerGenerator.ContainerFromIndex(index) as ListBoxItem; 

    CreateContextMenu(lbi); 
    Results.SelectedIndex = -1; 
} 
関連する問題