WPF中为什么路由事件不响应
给一个TextBox加ContextMenu,想通过路由事件在TextBox里响应,但现在能弹出菜单,却不能响应事件<TextBoxMargin="0,5"MenuIte...
给一个TextBox加ContextMenu,想通过路由事件在TextBox里响应,但现在能弹出菜单,却不能响应事件
<TextBox Margin="0,5" MenuItem.Click="TextBox_Click">
<TextBox.ContextMenu>
<ContextMenu >
<MenuItem Header="测试" />
<Separator />
<MenuItem Header="AA"/>
<MenuItem Header="BBBB"/>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox> 展开
<TextBox Margin="0,5" MenuItem.Click="TextBox_Click">
<TextBox.ContextMenu>
<ContextMenu >
<MenuItem Header="测试" />
<Separator />
<MenuItem Header="AA"/>
<MenuItem Header="BBBB"/>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox> 展开
1个回答
展开全部
MenuItem.ClickEvent 只bubble 到 VisualTreeHelper.GetParent (相对于 Sender) 返回 null 或 eventargs 的 handled=True.
当 ContextMenu 里的 MenuItem 被 clicked, 路由开始. 你可以用 VisualTreeHelper 检查 某个 MenuItem 的 Visual Parent, 一直循环到 VisualTreeHelper.GetParent 返回 Null 时. 对 ContextMenu 来说, visual root 是 System.windows.primitives.popuproot 元素, 无论如何也不会到 TextBox (TextBox.ContextMenu 只是一个属性).
MenuItem.Click="TextBox_Click" 应该放在 ContextMenu 元素里.
当 ContextMenu 里的 MenuItem 被 clicked, 路由开始. 你可以用 VisualTreeHelper 检查 某个 MenuItem 的 Visual Parent, 一直循环到 VisualTreeHelper.GetParent 返回 Null 时. 对 ContextMenu 来说, visual root 是 System.windows.primitives.popuproot 元素, 无论如何也不会到 TextBox (TextBox.ContextMenu 只是一个属性).
MenuItem.Click="TextBox_Click" 应该放在 ContextMenu 元素里.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询