如何在视图模型中绑定Click-in组合框



我想在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中处理事件的更多信息,请参阅此博客。

相关内容

  • 没有找到相关文章

最新更新