在下面的代码中,我看到隧道事件发生但没有看到相应的冒泡事件发生。为什么会这样?
谢谢, 戴夫
<Window x:Class="TestRoutedEvents.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"
PreviewMouseUp="Window_PreviewMouseUp"
MouseUp="Window_MouseUp">
<Grid Background="Brown" Margin="30"
PreviewMouseUp="Grid_PreviewMouseUp"
MouseUp="Grid_MouseUp">
<TextBlock Text="Press me" HorizontalAlignment="Center" VerticalAlignment="Center"
Background="LightGray"
Padding="3"
PreviewMouseUp="TextBlock_PreviewMouseUp"
MouseUp="TextBlock_MouseUp"/>
</Grid>
</Window>
namespace TestRoutedEvents
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void TextBlock_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("TextBlock_PreviewMouseUp");
}
private void Grid_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Grid_PreviewMouseUp");
}
private void Window_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Window_PreviewMouseUp");
}
private void TextBlock_MouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("TextBlock_MouseUp");
}
private void Grid_MouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Grid_MouseUp");
}
private void Window_MouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Window_MouseUp");
}
}
}
答案 0 :(得分:1)
事实上事件正在提高,但你无法做到。原因是当弹出窗口时,messagbox从窗口获取焦点。因此,路由事件链中的UI元素将不再接收路由事件。
您可以控制窗口并在其中添加事件详细信息以进行确认。 例如在xaml中添加ListBox并将其命名为listBox,然后在每个处理程序中使用此代码
listBox.Items.Add(发件人+ “\ n” 个+ e.RoutedEvent.Name + “\ n” 个+ e.RoutingStrategy);
答案 1 :(得分:0)
这是来自MSDN的引用:
TextBox内置了处理功能 冒泡MouseUp和事件。 因此,自定义事件处理程序 听MouseUp或MouseDown 来自TextBox的事件永远不会 调用。如果你需要回复 这些事件,听取隧道 PreviewMouseUp和PreviewMouseDown 而不是事件。
这篇文章是关于TextBox而不是TextBlock,但是我在其他UIElement派生的控件上测试了它,它们似乎都表现得一样。我假设这是在层次结构中的某个基类级别。
答案 2 :(得分:0)
我不知道你在尝试做什么,但也许这篇文章会有所帮助。它确认了Anurag所说的内容,关于从您的窗口获得焦点的消息框。
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f4d609d4-ba2c-478e-aa53-9ee557ea5165