Событие кнопки Подавить mousedown и mouseup, потому что событие кнопки является событием высокого уровня и имеет бит кода, который дает дескриптор флага true. Эта причина Подавлена для mousdown, чтобы решить эту проблему, вы можете добавить этот код в конструктор окна
тье MSDNПонимание перенаправленных событий и команд в WPF, Говорится
событие будет пузыриться (распространяться) вверх по визуальному дереву от исходного элемента до тех пор, пока оно не будет обработано или не достигнет корневого элемента.
Тем не менее, в этом примере, когда вы нажимаете кнопку,он не «всплывает в визуальном дереве» для обработки родительским событием StackPanelто есть нажатие на кнопку не запускает событие.
Почему нет?Что они имеют в виду, тогда как "пузыриться" если не это?
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>
Код-за:
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.";
}
}
}