gpt4 book ai didi

silverlight - Mvvm-Light Silverlight,使用带有 Combobox 的 EventToCommand

转载 作者:行者123 更新时间:2023-12-03 21:20:30 31 4
gpt4 key购买 nike

我已将 ComboBox 的 SelectedItemChangeEvent 连接到 View 模型中的 ICommand。一切似乎都工作正常,但我不知道如何获取 ComboxBox 的 SelectedItem。我想我需要使用 EventToCommand 的 CommandParameter - 我是否将它绑定(bind)到我的 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>

在我的 View 模型中:
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 的执行参数传递非常简单:

只需设置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];
}

关于silverlight - Mvvm-Light Silverlight,使用带有 Combobox 的 EventToCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131142/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com