在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)中:
希望这能为您节省一些时间。