W artykule MSDN Understanding Routed Events and Commands In WPF, stwierdzaDlaczego zdarzenie click button button nie powoduje "upuszczania drzewa wizualnego" do StackPanel jako stan artykułu MSDN?
wydarzeniem będzie bańka (propagacji) w górę drzewa wizualnej z elementu źródłowego dopóki nie został on obsługiwany lub osiągnie element główny.
Jednak w tym przykładzie, po kliknięciu przycisku to nie „bubble up wizualne drzewo”, aby obsługiwane przez rodzica StackPanel imprezy, to znaczy kliknięciu na przycisk pożarów żadnego zdarzenia.
Dlaczego nie? Co oznaczają one przez "bulgotanie" jeśli nie to?
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>
kod z opóźnieniem:
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.";
}
}
}
Co robi przycisk z moim kliknięciem myszy? Nie mam atrybutu kliknięcia w elemencie, nie obsługuję zdarzenia kliknięcia w kodzie, więc jak możemy powiedzieć, że przycisk wykonuje coś za pomocą kliknięć myszy? –
PreviewMouseDown zadziałało, dziękuję. –
To prawda, ale domyślna implementacja przycisku polega na zaabsorbowaniu zdarzenia myszy, aby przekształcić je w zdarzenie kliknięcia ... nawet jeśli nic nie zrobisz kliknięciem ... – Arcturus