даже команда не работает - PullRequest
       29

даже команда не работает

0 голосов
/ 01 февраля 2011

Я делаю одно приложение в MVVM, используя набор инструментов Galasoft MVVM Light.Однако я не могу заставить EventToCommand работать с Telerik Context Menu.Вот мой код: -

   <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>

Я попал в точку останова в моей модели представления.Однако параметр команды всегда равен нулю.Любые идеи, где я не прав?

Заранее спасибо:)

1 Ответ

1 голос
/ 03 августа 2011

Поскольку это старый пост, возможно, вы нашли ответ на свой вопрос.Однако, поскольку я пытался сделать то же самое, я не нашел точного ответа на это, и если другие ищут то же самое, я надеюсь, что это могло бы помочь им.

Вам нужно будет удалить аргумент CommandParameter из вашей EventToCommand и изменить его следующим образом:

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

Ваша RelayCommand в вашей ViewModel или везде, где вы реализуете RelayCommand, должна выглядеть примерно такэто:

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

CallbackMethod должен выглядеть примерно так:

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

Надеюсь, это поможет.

...