2011-02-01 49 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