0

我正在使用 Galasoft 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>

我确实在我的视图模型中遇到了断点。但是,命令参数始终为空。有什么想法我错了吗?

提前致谢 :)

4

1 回答 1

1

由于这是一篇旧帖子,您可能已经找到了问题的答案。然而,当我试图做同样的事情时,我没有找到一个精确的答案,如果其他人也在寻找同样的答案,我希望这可以帮助他们。

您需要从 EventToCommand 中删除 CommandParameter 参数并将其更改为:

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

您的 ViewModel 中的 RelayCommand 或您正在实施 RelayCommand 的任何地方都必须看起来像这样:

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

CallbackMethod 应该看起来像这样:

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

希望这会有所帮助。

于 2011-08-03T08:07:43.247 回答