2014-09-13 54 views
0

我正在使用此數據模板作爲我的應用程序,該應用程序使用WP8工具包中的上下文菜單。因此,此數據項中的每個項目都有一個按鈕(用於打開上下文菜單)並且上下文菜單中也有點擊事件單擊DataTemplate中的按鈕 - WP8

因此,當我在應用程序中使用此數據模板作爲LongListSelectors時,如何調用這些點擊事件?

<DataTemplate> 
     <Grid> 
      <Grid.ColumnDefenitions>......... 
      ...... 
      <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Grid.Column="0"/> 
      <TextBlock Text="{Binding Artist}" TextWrapping="Wrap" Grid.Column="1"/> 
      <Button Click="openContext" Grid.Column="2"/> 
       <toolkit:ContextMenuService.ContextMenu> 
        <toolkit:ContextMenu IsZoomEnabled="false"> 
         <toolkit:MenuItem Header="Download" 
              Click="context_download" /> 
         <toolkit:MenuItem Header="Add to later" 
              Click="context_later" /> 
         ....... 
        </toolkit:ContextMenu> 
       </toolkit:ContextMenuService.ContextMenu> 
      </TextBlock> 
     </StackPanel> 
    </DataTemplate> 
+0

此上下文菜單旨在打開並保留特定項目。這是常見的操作系統,這樣你可以混淆你的用戶... – Filip 2014-09-13 17:18:36

回答

0

上下文菜單應該在元素中聲明,而不是分開。在下面的代碼中聲明你的按鈕內的上下文菜單,並刪除按鈕中的點擊事件。

只要您在按鈕中聲明瞭上下文菜單,它就會自動運行(打開上下文菜單),而不會出現任何單擊事件。

<Button Content="ContextMenu"> 
      <toolkit:ContextMenuService.ContextMenu> 
       <toolkit:ContextMenu IsZoomEnabled="False"> 
        <toolkit:MenuItem Header="Download" Click="context_download"/> 
        <toolkit:MenuItem Header="Add to later" Click="context_later"/> 
       </toolkit:ContextMenu> 
      </toolkit:ContextMenuService.ContextMenu> 
     </Button> 
+0

是的,但我的問題是,當我把所有這些控制(按鈕,網格,contextmenu ...)在數據模板中,我可以使用這個控件的事件處理器(這裏是context_download和context_later)? – user3448806 2014-09-15 06:47:52

+1

是啊,爲什麼不呢?你沒有試過嗎?你可以參考這個答案瞭解更多信息。 http://stackoverflow.com/questions/2319007/wpfhow-to-raise-datatemplates-context-menuitem-event – 2014-09-15 09:38:53

+0

謝謝,似乎這工作:D非常感謝:D – user3448806 2014-09-15 14:29:17