我想在MVVM模式中单击组合框时做点什么。
我正试图以这种方式使用输入绑定:
<ComboBox.InputBindings>
<KeyBinding Key="Return" Command="{Binding BuscarKeyDownCommand}"/>
<MouseBinding Gesture="LeftClick" Command="{Binding TiposFacturasMouseLeftClickCommand}"/>
</ComboBox.InputBindings>
在我的视图模型中,我有这样的代码:
private RelayCommand _tiposFacturasMouseLeftClickCommand;
public RelayCommand TiposFacturasMouseLeftClickCommand
{
get { return _tiposFacturasMouseLeftClickCommand ?? (_tiposFacturasMouseLeftClickCommand = new RelayCommand(param => TiposFacturasMouseLeftClick(), param => true)); }
}
private async void TiposFacturasMouseLeftClick()
{
try
{
//search for items.
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但命令并没有发出。
但是,键返回输入绑定可以按预期工作。
绑定组合框的点击事件的最佳方式是什么?或者,也许还有另一个更好的解决方案,可以在我第一次点击组合框时搜索它上的项目
谢谢。
您可以安装Microsoft.Xaml.Behaviors.Wpf NuGet包,并在引发事件时使用EventTrigger
来调用命令,例如:
<ComboBox xmlns:i="http://schemas.microsoft.com/xaml/behaviors">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseLeftButtonDown" >
<i:InvokeCommandAction Command="{Binding TiposFacturasMouseLeftClickCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ComboBoxItem>1</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>3</ComboBoxItem>
</ComboBox>
有关如何在MVVM中处理事件的更多信息,请参阅此博客。