Я подключил ComboBox SelectedItemChangeEvent к ICommand в моей модели просмотра. Кажется, что все работает нормально, но я не знаю, как получить SelectedItem из ComboxBox. Я думаю, мне нужно использовать CommandParameter EventToCommand - я привязываю это к чему-то в моей модели ViewModel, у которой есть выбранный элемент ComboBox? Я попытался это:Mvvm-Light Silverlight, используя EventToCommand с 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>
и на мой взгляд, модель:
public ICommand SelectCategoryCommand
{
get
{
return new SelectCategoryCommand(this);
}
}
public CategoryType SelectedCategory
{
get; set;
}
и 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;
}
}
Однако параметр в методе Execute в ICommand всегда нуль. Я довольно неопытен с SilverLight, поэтому я думаю, что мне действительно не хватает чего-то очевидного здесь. Может ли кто-нибудь помочь? Заранее спасибо!
Вы должны отметить свой ответ, особенно потому, что он решил вашу проблему. – kevindaub
thanx the bundle man, сохранить мой день – zeeshan