He conectado un SelectedItemChangeEvent de ComboBox a un ICommand en mi modelo de vista. Todo parece funcionar bien, pero no sé cómo obtener SelectedItem de ComboxBox. Creo que necesito usar CommandParameter de EventToCommand, ¿debo vincular esto a algo en mi ViewModel que tenga el elemento seleccionado de ComboBox? He intentado esto:Mvvm-Light Silverlight, usando EventToCommand con un Combobox
<ComboBox
Width="422"
Height="24"
DisplayMemberPath="Name"
ItemsSource="{Binding CategoryTypes}"
SelectedItem="{Binding SelectedCategory}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<MvvmLight:EventToCommand
Command="{Binding SelectCategoryCommand,Mode=TwoWay}"
CommandParameter="{Binding SelectedCategory, Mode=TwoWay}"
MustToggleIsEnabledValue="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
y en mi modelo de vista:
public ICommand SelectCategoryCommand
{
get
{
return new SelectCategoryCommand(this);
}
}
public CategoryType SelectedCategory
{
get; set;
}
y la ICommand
public class SelectCategoryCommand : ICommand
{
private RowViewModel _rowViewModel;
public SelectCategoryCommand(RowViewModel rowViewModel)
{
_rowViewModel = rowViewModel;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
CategoryType categoryType = (CategoryType) parameter;
}
}
Sin embargo, el parámetro en el método Execute del ICommand siempre es nula. Todavía no tengo experiencia con SilverLight, así que creo que me falta algo obvio aquí. ¿Alguien puede ayudar? ¡Gracias por adelantado!
Debe marcar su respuesta especialmente, ya que resolvió su problema. – kevindaub
gracias hombre del paquete, ahorra mi día – zeeshan