请考虑以下代码:
<Window x:Class="WpfApplicationWPF.CommandsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CommandsWindow" Height="300" Width="300" PreviewMouseUp="Window_PreviewMouseUp" MouseUp="Window_MouseUp" >
<StackPanel Name="StackPanelNew" Background="Beige" PreviewMouseUp="Window_PreviewMouseUp" MouseUp="Window_MouseUp">
<Button Name="BTNNew" VerticalAlignment="Center" PreviewMouseUp="Window_PreviewMouseUp" MouseUp="Window_MouseUp">
<Label Name="LabelNew" BorderBrush="Red" BorderThickness="4" PreviewMouseUp="Window_PreviewMouseUp" MouseUp="Window_MouseUp">
<TextBox PreviewMouseUp="Window_PreviewMouseUp" MouseUp="Window_MouseUp">HELLO</TextBox>
</Label>
</Button>
</StackPanel>
</Window>
当我点击标签时,它的previewkeyup不会触发标签,但是当我点击文本框时,它会触发从Window到文本框(包括标签)的所有控件。
为什么会这样?
答案 0 :(得分:1)
理由,在我自己的想法中
这是因为,无法确定是否通过标签点击或按钮点击来启动鼠标,尝试右键单击标签。
答案 1 :(得分:1)
对您的情况的说明非常简单:当您左键单击Button
它captures mouse输入并阻止通过子树进一步传播事件时。单击TextBox
(没有人在此处捕获鼠标)时并非如此。