我将视图模型中的ComboBox的SelectedItemChangeEvent连接到ICommand.一切似乎工作正常,但我不知道如何获取ComBoxBox的SelectedItem.我想我需要使用EventToCommand的CommandParameter – 我将其绑定到viewmodel中具有ComboBox的selectedItem的内容吗?我试过这个:
<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; } }
但是,ICommand的Execute方法中的参数始终为空.我对SilverLight没有经验,所以我觉得我真的很想念这里的东西.谁能帮忙?提前致谢!
解决方法
在做一些挖掘之后,我发现将实际的SelectionChangedEventArgs作为ICommand的execute参数传递很简单:
只要设置PassEventArgsToCommand =“True”
<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}" MustToggleIsEnabledValue="True" PassEventArgsToCommand="True"/> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox>
然后在Execute方法中执行以下操作:
public void Execute(object parameter) { SelectionChangedEventArgs e = (SelectionChangedEventArgs)parameter; CategoryType categoryType = (CategoryType)e.AddedItems[0]; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。