2011-02-06 53 views
12

我需要打開一個菜單,並且由於WP7是not designed來執行此類操作,我正在接受Toolkit的幫助。以下是示例代碼:ContextMenu點擊而不是點擊並按住

<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> 

現在,只要用戶執行按住操作,此功能就可以正常工作。但我不能要求用戶採取這樣的行動。我需要通過單擊/輕擊/觸摸/手勢(您想調用它的水手)來顯示菜單。有人可以建議嗎?如果您認爲工具包不是最好的方法,那麼請使用示例代碼建議替代方案。我試圖彈出,但如果你想爲你的應用程序上下文菜單,然後ContextMenuContextMenuService都接受,因爲它是整個第三方和預裝應用程序的標準,最好的辦法是做多好不好我的應用程序了

回答

14

您可以將GestureListener添加到Border並訂閱Tap事件。在事件處理程序中,如果ContextMenu沒有邏輯父項,則將獲得BorderContextMenu,並將IsOpen設置爲true。

<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; 
    } 
} 
0

。用戶已經瞭解了「點擊並握住」手勢,因此解決這個問題將會違反直覺。

如果(無論出於何種原因),則必須從單一的水龍頭啓動ContextMenu,那麼你可以隨時從Silverlight工具包定製的源代碼ContextMenu.cs使代替掛鉤Hold事件它掛鉤Tap事件。

+0

嗨德里克,這並沒有多大幫助。考慮到我對WP7和silverlight很新,我查了一下surce的代碼,但是不太瞭解。你能幫我改變點擊並按住行動只是點擊? – Ravi 2011-02-06 15:25:43

+0

下載Silverlight Toolkit的源代碼,打開我引用的源文件,將`.Hold + =`改爲`.Tap + =`,重新編譯,將項目中的引用更新爲新的程序集。不過,我仍然很懷疑改變默認行爲是否正確。 – 2011-02-06 19:05:54