Search code examples
wpfmvvmcombobox

WPF ComboBox SelectionChanged event to command not firing


I have the following XAML of a ComboBox which has a code-behind SelectionChanged event handler and another Command property of the ViewModel. I have set the SelectedIndex property to 0. Now when I run the project, the code-behind handler is invoked, but the Command is not executed. What I want is that the Command should be executed for SelectedIndex=0 the first time the View is loaded.

<ComboBox Name="listComboBox" SelectionChanged="listComboBox_SelectionChanged" SelectedIndex="0" SelectedValuePath="Content" Margin="5,0" Height="35" Width="150" VerticalAlignment="Center" HorizontalAlignment="Left">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <i:InvokeCommandAction Command="{Binding ListTypeComboSelectionChangedCmd}" CommandParameter="{Binding ElementName=listComboBox, Path=SelectedValue}"/>
        </i:EventTrigger>
     </i:Interaction.Triggers>
     <ComboBoxItem Content="ItemOne" />
     <ComboBoxItem Content="ItemTwo" />
     <ComboBoxItem Content="ItemThree" />
</ComboBox>

Update

Code-behind event handler:

private void listComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { }

ICommand object:

public ICommand ListTypeComboSelectionChangedCmd 
{ 
    get { return new RelayCommand<string>(ListTypeComboSelectionChangedCmdExec); }
    private set;
}

ICommand Handler:

private void ListTypeComboSelectionChangedCmdExec(string listType) { }

Solution

  • Bind SelectedValue to a Property on the view model.

    In the Property set{...} block do your logic there or call

    ListTypeComboSelectionChangedCmdExec(value)
    

    See Binding ComboBox SelectedItem using MVVM