I need to open up a menu and since WP7 is not designed
to perform such actions, I am taking help of Toolkit. Following is the sample code:
<Border BorderThickness="3" Padding="6">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="item1" Click="Item1_Click" />
<toolkit:MenuItem Header="item2" Click="Item2_Click" />
<toolkit:MenuItem Header="item3" Click="Item3_Click" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Text="Tap" />
</Border>
Now this works fine as long as user does a press and hold action. But I can't ask the user for such action. I need to display the menu on a single click/tap/touch/gesture (watever you want to call it). Can someone please suggest? If you think toolkit is not the best way, then please suggest alternatives with sample code. I tried popup but that did more bad than good to my applicaiton
You could add GestureListener
to the Border
and subscribe to the Tap
event. In the event handler, you get the ContextMenu
for the Border
and set IsOpen
to true if it doesn't have a logical parent.
<Border BorderThickness="3" Padding="6">
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener Tap="GestureListener_Tap" />
</toolkit:GestureService.GestureListener>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="item1" Click="Item1_Click" />
<toolkit:MenuItem Header="item2" Click="Item2_Click" />
<toolkit:MenuItem Header="item3" Click="Item3_Click" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Text="Tap" />
</Border>
private void GestureListener_Tap(object sender, GestureEventArgs e)
{
Border border = sender as Border;
ContextMenu contextMenu = ContextMenuService.GetContextMenu(border);
if (contextMenu.Parent == null)
{
contextMenu.IsOpen = true;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With