В настоящее время я преобразовываю проект WPF среднего размера в MVVM и столкнулся с проблемой, которую пока не смог решить.Может быть, вы могли бы помочь мне?
Целевой фреймворк .NET 3.5.1.
У меня есть представление списка, которое получает свои элементы из базовой модели представления.Эта модель представления предоставляет команду для удаления выбранных элементов из списка.Поэтому параметр команды связан со свойством SelectedItems представления списка.
<ListView ItemsSource="{Binding MyItems}"
x:Name="MyListView"
SelectionMode="Extended">
</ListView>
<Button x:Name="MyRemoveButton"
Content="Remove item"
Command="{Binding RemoveItemCommand}"
CommandParameter="{Binding ElementName=MyListView, Path=SelectedItems}">
Мое намерение состоит в том, чтобы выполнить эту команду не только при нажатии кнопки, но также и при возникновении события KeyUp в представлении списка.и нажатая клавиша «удалить».
Я был близок к поиску решения, когда наткнулся на триггеры взаимодействия в этом примере:
http://joyfulwpf.blogspot.com/2009/05/mvvm-invoking-command-on-attached-event.html?showComment=1250325648481#c3867495357686026904
Теперь проблемас этой демонстрацией то, что параметром команды является нажатая клавиша, но в моем случае мне нужно, чтобы параметром команды было свойство SelectedItems, и мне нужно, чтобы команда выполнялась только для определенной клавиши.
Есть ли способ сделать это без особых накладных расходов и с помощью MVVM?
Что-то вроде этого было бы замечательно:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<local:CommandAction Command="{Binding RemoveItemCommand}"
CommandParameter={Binding ElementName=MyListView, Path=SelectedItems}
EventArgument="Key.Delete"/>
</i:EventTrigger>
</i:Interaction.Triggers>