Nell'articolo MSDN Understanding Routed Events and Commands In WPF, essa affermaPerché il pulsante non fa clic sull'evento "bolla su albero visivo" su StackPanel come afferma l'articolo MSDN?
un evento bolla (propagazione) l'albero visuale dall'elemento sorgente fino a quando è stato trattato o raggiunge l'elemento radice.
Tuttavia, in questo esempio, quando si fa clic sul pulsante, non "bolla l'albero visuale" per ottenere gestito dal genitore StackPanel evento, cioè cliccando sugli incendi pulsante nessun caso.
Perché no? Cosa significano allora "borbottando" se non questo?
XAML:
<Window x:Class="TestClickEvents456.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">
<StackPanel x:Name="TheStackPanel"
Background="Yellow"
MouseDown="TheStackPanel_MouseDown">
<Button x:Name="TheButton"
Margin="10"
Content="Click This"/>
<TextBlock x:Name="TheMessage"
Text="Click the button or the yellow area"/>
</StackPanel>
</Window>
code-behind:
using System.Windows;
using System.Windows.Input;
namespace TestClickEvents456
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void TheStackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
TheMessage.Text = "StackPanel was clicked.";
}
}
}
cosa fa il pulsante con il mio clic del mouse? Non ho alcun attributo click nell'elemento, non sto gestendo l'evento click nel codice sottostante, quindi come possiamo dire che il pulsante sta facendo qualcosa con i clic del mouse? –
PreviewMouseDown ha funzionato, grazie. –
Vero, ma l'implementazione predefinita del pulsante è di assorbire l'evento del mouse per trasformarlo in un evento click ... anche se non fai nulla con il clic ... – Arcturus