2011-02-01 84 views
0

我正在使用Galaxoft MVVM Light工具包在MVVM中創建一個應用程序。但是我不能讓EventToCommand使它與Telerik上下文菜單一起工作。這裏是我的代碼: -事件指令不起作用

<ListBox x:Name="lstPhotoAlbums" ItemsSource="{Binding AlbumsCollection}" 
         Margin="3,0" Grid.Row="1" ItemsPanel="{StaticResource wrapPanelItemsPanelTemplate}" 
         ItemTemplate="{StaticResource ListboxPhotosDataTemplate}" 
         ItemContainerStyle="{StaticResource ListboxPhotoAlbumsContainerStyle}" Height="500" HorizontalAlignment="Left" VerticalAlignment="Top" Width="178"> 
         <telerik:RadContextMenu.ContextMenu> 
          <telerik:RadContextMenu x:Name="albumsCtxMenu"> 
           <telerik:RadMenuItem Header="Delete" > 
            <i:Interaction.Triggers> 
             <i:EventTrigger EventName="Click"> 
              <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding DeleteAlbumCommand}" CommandParameter="{Binding SelectedItem, ElementName=lstPhotoAlbums}"/> 
             </i:EventTrigger> 
            </i:Interaction.Triggers> 
           </telerik:RadMenuItem> 
          </telerik:RadContextMenu> 
         </telerik:RadContextMenu.ContextMenu> 
        </ListBox> 

我打在我的viewmodel斷點。但是,命令參數始終爲空。任何想法,我錯了?

感謝提前:)

回答

1

由於這是舊的文章,你可能已經找到了問題的答案。然而,正如我試圖這樣做,我沒有找到一個精確的答案,如果其他人也在尋找相同的,我希望這可能會幫助他們。

您將需要從EventToCommand刪除CommandParameter參數,並將它改成這樣:

<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding DeleteAlbumCommand}" PassEventArgsToCommand="True" /> 

你RelayCommand在視圖模型或徘徊無論您正在實現RelayCommand必須是這個樣子:

RelayCommand<EventArgs> DeleteAlbumCommand = new RelayCommand<EventArgs>(CallbackMethod); 

CallbackMethod應該再是這個樣子:

private void CallbackMethod(EventArgs eventArgs) 
{ 
... 
} 

希望這會有所幫助。

+0

而你的EventName應該是ItemClick。 – talisker 2011-08-03 08:55:27