visual que mouseenter eventos evento event doble derecho c# wpf xaml events mouseevent

c# - mouseenter - Evento WPF MouseDown que no se activa en todas partes en un control



mouseleave c# (1)

<StackPanel Background="Transparent" ...

o

<Border Background="Transparent" ...

debería hacer el truco ...

Esto hace que la cuadrícula sea transparente, sin embargo, visible para clics del mouse.

Mire aquí para obtener más información.

Hay algunas otras circunstancias, donde tienes que usar PreviewXXX -Event, esto es cuando un elemento hijo "se traga" el evento, pero en tu caso, lo anterior debería ser lo que estás buscando.

Actualmente estoy luchando contra otra lucha de WPF, concretamente mouseEvents. Básicamente tengo un control muy simple (un Border contiene una Grid que a su vez tiene algunos TextBlocks ). Estoy tratando de lograr un comportamiento simple: hacer doble clic debería convertir el control en modo de edición (que de hecho oculta los TextBlocks con TextBoxes vinculados a los mismos datos).

Nada elegante, ¿verdad? Bueno, todavía estoy luchando. El MouseDoubleClick vinculado a mi UserControl simplemente se dispara cuando hago clic en un control (como, haciendo clic en ON un bloque de texto). Si hago clic en un espacio vacío entre TextBlocks , no se dispara nada. Ni siquiera MouseDown .

¿Cómo podría hacer que funcione para capturar cada clic del mouse? Supuse que vincular un evento MouseDown a un borde debería atrapar cada clic en el borde, pero ... terminó no captando clics en partes vacías del borde.

Aquí hay un borrador del código que hice para que lo ejecute:

XAML:

<StackPanel Orientation="Vertical"> <Border Height="400" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center" BorderBrush="Black" BorderThickness="2" MouseDown="Border_MouseDown" MouseUp="Border_mouseUp"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </Border> <TextBlock Height="100" Width="300" HorizontalAlignment="Center" TextAlignment="Center" x:Name="thetext" Visibility="Collapsed" Foreground="White" Background="Red" Text="CLICKED!" /> </StackPanel>

Código detrás:

private void Border_MouseDown(object sender, MouseButtonEventArgs e) { thetext.Visibility = Visibility.Visible; } private void Border_mouseUp(object sender, MouseButtonEventArgs e) { thetext.Visibility = Visibility.Collapsed; }

Ahora intente hacer clic en uno de los textos "BLUFF": Aparecerá un texto "CLICKED". Intente hacer clic en otro lugar, entre los TextBlocks: no pasa nada.

¡Gracias!