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
If you want a context menu for your application, then the
ContextMenu
andContextMenuService
are the best approach to take because it is standard throughout third party and pre-installed applications. Users already understand the 'tap-and-hold' gesture, so working around that will be counter-intuitive.If (for whatever reason) you must initiate a
ContextMenu
from a single tap, then you can always customize the source code for ContextMenu.cs from the Silverlight Toolkit so that instead of hooking theHold
event it hooks theTap
event.You could add
GestureListener
to theBorder
and subscribe to theTap
event. In the event handler, you get theContextMenu
for theBorder
and setIsOpen
to true if it doesn't have a logical parent.