在WPF TextBox上捕获鼠标单击

我想在TextBox上捕获鼠标点击:

      

现在,当用户第一次进入TextBox时,我只收到鼠标单击事件。 在此TextBox具有键盘焦点后,我不再接收鼠标单击事件。 知道如何让这个工作吗?

TextBox类

TextBox具有用于冒泡MouseUp和MouseDown事件的内置处理。 因此, 不会调用从TextBox侦听MouseUp或MouseDown事件的自定义事件处理程序如果您需要响应这些事件,请改为侦听隧道PreviewMouseUp和PreviewMouseDown事件,或者使用HandledEventsToo参数注册处理程序 (后一个选项仅通过代码可用)。 除非您故意要禁用TextBox本机处理这些事件,否则不要标记处理的事件,并注意这会对控件的UI产生显着影响。

在您的代码中,您只是触发MouseLeftButtonUp

您可以使用PreviewMouseDown事件,并在控件的内部部分处理单击之前捕获任何方式的单击:

  

这是使用MVVM的人的代码示例

它适用于从Controlinheritance的事件。

在ViewModel中:

 private ICommand _merchantRefereneceCommand; public ICommand MerchantReferenceCopyToClipboard { get { return _merchantRefereneceCommand ?? (_merchantRefereneceCommand = new MerchantRefereneceCommand(this)); } set { _merchantRefereneceCommand = value; } } public class MerchantRefereneceCommand : ICommand { private readonly PaymentViewModel _paymentViewModel; public MerchantRefereneceCommand(PaymentViewModel paymentViewModel) { _paymentViewModel = paymentViewModel; } public bool CanExecute(object parameter) { return true; } public void Execute(object parameter) { //Your code goes here. } public event EventHandler CanExecuteChanged; } 

在视图(xaml)中:

        

希望这能为您节省一些时间。