Если вы хотите использовать более строгий подход к MVVM (или ненавидеть кодировать в выделенном коде), EventToCommand может быть другим вариантом.Он также входит в набор инструментов MVVM-light.
В представлении (XAML) SelectedItem в списке подается в ViewModel, как показано ниже.
<ListBox Name="controlType" ItemsSource={Binding Path=items}>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding Path=SelectControlType, Mode=OneWay}" CommandParameter="{Binding Path=SelectedItem, ElementName=controlType}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
В ViewModel RelayCommand и метод получают данныекак показано ниже.
public ICommand SelectControlType
{
get { return _selectControlType ?? (_selectControlType = new RelayCommand<object>(DoSomething)); }
}
// backing field.
private RelayCommand<object> _selectControlType;
// method to handle the data from SelectionChanged event
public void DoSomething(object param)
{
if(param is ValidItemType)
{
// Do somthing...
}
}