Ich kämpfe gerade gegen einen anderen WPF Kampf, nämlich mouseEvents. Ich habe im Grunde eine sehr einfache Kontrolle (eine Border
enthält eine Grid
, die selbst ein paar TextBlocks
hat). Ich versuche, ein einfaches Verhalten zu erreichen: Doppelklick sollte das Steuerelement in Bearbeitungsmodus (die in der Tat verbirgt die TextBlocks
mit TextBoxes
gebunden an die gleichen Daten.WPF MouseDown Event feuert nicht überall in einer Steuerung
nichts Schickes, oder? Nun noch, ich kämpfe. die MouseDoubleClick
verknüpfen meinen UserControl
feuert nur, wenn ich in einem Steuer klicken (wie ein Klick auf einen Textblock). Wenn ich zwischen TextBlocks
auf einen leeren Platz klicken, wird nichts gebrannt. Nicht einmal MouseDown
.
Wie könnte ich es machen arbeiten, um jeden Mausklick zu fangen? Ich nahm an, dass die Verknüpfung eines MouseDown
Ereignisses mit einem Border
sollte jeden Klick auf den Rand fangen, aber ... es am Ende keine Klicks zu fangen an leeren Teilen der Grenze.
hier etwas Entwurf Code, den ich für Sie es ausführen gemacht:
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>
-Code hinter:
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
thetext.Visibility = Visibility.Visible;
}
private void Border_mouseUp(object sender, MouseButtonEventArgs e)
{
thetext.Visibility = Visibility.Collapsed;
}
Jetzt versuchen Sie eine der "BLUFF" klicken Texte: Ein "CLICKED" Text erscheint. Klicke irgendwo anders zwischen den TextBlocks: Nichts passiert.
Vielen Dank!
Gut. Das war unerwartet leicht - und dumm. Danke für die schnelle Antwort. Ich habe immer gedacht, Standard-Hintergrundfarbe war Transparent. Danke vielmals! Es gibt einen Tag, an dem WPF kämpft – Damascus