MVVMアプローチをより厳密に実行したい場合(またはコードビハインドでコーディングするのが嫌いな場合)、EventToCommandを別のオプションにすることができます。MVVM-lightツールキットにも含まれています。
View(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...
}
}