way two raisepropertychanged property change c# wpf xaml textbox mouseevent

c# - two - wpf binding textbox



Capturar clics del mouse en WPF TextBox (3)

Aquí hay un ejemplo de código para aquellos que están usando MVVM

Funciona bien para eventos que heredan de Control.

En 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; }

En la vista (xaml):

<TextBox Grid.Row="1" x:Name="MerchantReference" MaxLength="10" IsReadOnly="True" Text="{Binding MerchantReference, Mode=OneWay}" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseDoubleClick" > <i:InvokeCommandAction Command="{Binding MerchantReferenceCopyToClipboard}" /> </i:EventTrigger> </i:Interaction.Triggers> </TextBox>

Espero que esto te ahorre algo de tiempo.

Quiero capturar clics del mouse en un TextBox :

<Window x:Class="WpfApplication2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <TextBox x:Name="t" MouseDown="TextBox_MouseDown" MouseLeftButtonDown="TextBox_MouseLeftButtonDown" MouseLeftButtonUp="TextBox_MouseLeftButtonUp" Height="50" /> </Grid> </Window>

Ahora solo recibo un evento de clic de mouse cuando el usuario ingresa por primera vez al TextBox . Después de que este TextBox tenga el foco en el teclado, ya no recibo el evento de clic del mouse. ¿Alguna idea de cómo hacer que esto funcione?


Puede usar el evento PreviewMouseDown y capturar los clics de esa manera antes de que las partes internas del proceso de control hagan clic en:

<TextBox x:Name="t" PreviewMouseDown="TextBox_MouseDown" Height="32" Width="274" />


Clase TextBox

TextBox tiene un manejo incorporado para los eventos burbujeantes MouseUp y MouseDown. En consecuencia, no se invocarán los controladores de eventos personalizados que escuchan eventos MouseUp o MouseDown desde un TextBox . Si necesita responder a estos eventos, escuche los eventos de túnel PreviewMouseUp y PreviewMouseDown en su lugar, o registre los controladores con el argumento HandledEventsToo (esta última opción solo está disponible a través del código). No marque el evento manejado a menos que desee deliberadamente deshabilitar el manejo nativo de TextBox de estos eventos, y tenga en cuenta que esto tiene efectos notables en la IU del control.

En tu código, estás disparando MouseLeftButtonUp