Trong bài viết MSDN Understanding Routed Events and Commands In WPF, nó khẳng địnhTại sao không bấm nút sự kiện "bong bóng lên cây trực quan" để StackPanel như tiểu bang bài viết MSDN?
một sự kiện sẽ bong bóng (tuyên truyền) lên cây thị giác từ các yếu tố nguồn cho đến khi một trong hai nó đã được xử lý hoặc nó đạt đến phần tử gốc.
Tuy nhiên, trong ví dụ này, khi bạn nhấp vào nút, nó không "bong bóng lên cây thị giác" để xử lý bởi phụ huynh StackPanel kiện, ví dụ: cách nhấp vào nút cháy không có sự kiện.
Tại sao không? Vậy ý của chúng là gì bằng cách "sủi bọt" nếu không?
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.";
}
}
}
nút này hoạt động với cú click chuột của tôi là gì? Tôi không có thuộc tính nhấp chuột nào trong phần tử, tôi không xử lý sự kiện nhấp chuột trong mã phía sau, vì vậy làm cách nào chúng tôi có thể nói nút đang làm điều gì đó với các lần nhấp chuột? –
PreviewMouseDown hoạt động, cảm ơn. –
Đúng, nhưng việc thực hiện mặc định của nút là hấp thụ sự kiện chuột của bạn để biến nó thành sự kiện nhấp ... ngay cả khi bạn không làm gì với lần nhấp ... – Arcturus