如何将WPF中的命令绑定到控件的双击事件处理程序?

我需要绑定文本块的双击事件(或者可能是一个图像 – 无论哪种方式,它的用户控件),我的ViewModel中的命令。

TextBlock.InputBindings似乎没有正确绑定到我的命令,有什么帮助?

尝试Marlon Grech 附加的命令行为 。

<Button> <Button.InputBindings> <MouseBinding Gesture="LeftDoubleClick" Command="YourCommand" /> </Button.InputBindings> </Button> 

http://thejoyofcode.com/Invoking_a_Command_on_a_Double_Click_or_other_Mouse_Gesture.aspx

很简单,我们使用MVVM的方式:我在这里使用MVVM Light,它易于学习和强大。

1.input以下几行xmlns声明:

 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command; assembly=GalaSoft.MvvmLight.Extras.WPF4" 

2.定义你的文本块就像这样:

 <textBlock text="Text with event"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseDoubleClick"> <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding Edit_Command}"/> </i:EventTrigger> </i:Interaction.Triggers> </textBlock> 

3.然后在您的viewmodel中写入您的命令代码!

ViewModel1.cs

 Public RelayCommand Edit_Command { get; private set; } Public ViewModel1() { Edit_Command=new RelayCommand(()=>execute_me()); } public void execute_me() { //write your code here } 

我希望这适用于您,因为我已经在Real ERP应用程序中使用它

我也有类似的问题,我需要将ListView的MouseDoubleClick事件绑定到ViewModel中的命令。

我想出的最简单的解决scheme是放置一个虚拟button,它具有所需的命令绑定,并在MouseDoubleClick事件的事件处理程序中调用button命令的Execute方法。

的.xaml

  <Button Visibility="Collapsed" Name="doubleClickButton" Command="{Binding Path=CommandShowCompanyCards}"></Button> <ListView MouseDoubleClick="ListView_MouseDoubleClick" SelectedItem="{Binding Path=SelectedCompany, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Margin="0,10,0,0" ItemsSource="{Binding Path=CompanyList, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" HorizontalContentAlignment="Stretch" > 

代码隐藏

  private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { doubleClickButton.Command.Execute(null); } 

这不是直接的,但它非常简单,它的工作原理。