2013-04-01 64 views
0

我不明白爲什麼當我使用MVVM時,無法在列表框中右鍵單擊。 我使用事件觸發器,但有些事件不起作用。無法檢測MVVM列表框上的右鍵單擊

<ListBox x:Name="PlaylistsList" ItemsSource="{Binding PlaylistsList}" HorizontalAlignment="Left"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="MouseRightButtonDown"> 
       <i:InvokeCommandAction Command="{Binding NewPlaylistCommand}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
</ListBox> 

我的命令「NewPlaylistCommand」永遠不會調用。你可以幫幫我嗎 ? 謝謝。

編輯: 我找到解決我的問題,我用的ContextMenu與我ListBoxItem的

<ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel x:Name="ListBox"> 
        <TextBlock Text="{Binding Name}"/> 
        <StackPanel.ContextMenu> 
         <ContextMenu> 
          <MenuItem Header="Rename" Command="{Binding RenamePlaylistCommand}"/> 
          <MenuItem Header="Delete" Command="{Binding DeletePlaylistCommand}" CommandParameter="{Binding SelectedValue, ElementName=PlaylistsList}"/> 
         </ContextMenu> 
        </StackPanel.ContextMenu> 
       </StackPanel> 
      </DataTemplate> 
</ListBox.ItemTemplate> 

互動現在我可以直接在我的項目點擊重命名或刪除它。 謝謝你的幫助。

+0

您是否在輸出窗口中收到任何詳細說明無效綁定表達式的錯誤? – Josh

+0

輸出窗口中沒有錯誤 – Gims

+0

我沒有辦法解決您的實際問題,但是您嘗試捕獲菜單項上的右鍵單擊事實表明您想要顯示一個菜單以在此項上進行交互。我對嗎? – Ucodia

回答

0

最有可能是裏面的東西吞噬了你的右鍵單擊事件,因此它沒有冒泡(我懷疑它與上下文菜單行爲有關)。你可以使用預覽 - 事件,它以另一種方式冒泡。

您可以使用的另一種解決方案是直接將交互應用於列表框中的每個孩子(以及他們的孩子)。

但是,我真的不希望從用戶界面的角度來看,右鍵單擊播放列表將創建一個新的播放列表...我期望從我多年的Windows使用情況中,應該彈出一個上下文菜單,可能用「添加新播放列表」菜單項。

+0

我已經有一個菜單項添加一個新的播放列表,我想右鍵點擊一個項目來重命名或刪除它。 – Gims

相關問題