Ho collegato un oggetto SelectedItemChangeEvent di ComboBox a un ICommand nel mio modello di vista. Tutto sembra funzionare bene, tuttavia non so come ottenere il SelectedItem del ComboxBox. Penso di aver bisogno di usare il CommandParameter di EventToCommand - posso associarlo a qualcosa nel mio ViewModel che ha l'oggetto selezionato del ComboBox? Ho provato questo:Mvvm-Light Silverlight, utilizzando EventToCommand con una casella combinata
<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>
e nel mio modello di vista:
public ICommand SelectCategoryCommand
{
get
{
return new SelectCategoryCommand(this);
}
}
public CategoryType SelectedCategory
{
get; set;
}
e 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;
}
}
Tuttavia il parametro nel metodo Execute del ICommand è sempre nullo. Sono abbastanza inesperto con SilverLight quindi penso che mi manchi davvero qualcosa di ovvio qui. Qualcuno può aiutare? Grazie in anticipo!
Dovresti segnare la tua risposta soprattutto dal momento che ha risolto il tuo problema. – kevindaub
grazie a un fagotto, salva la mia giornata – zeeshan