我有一个小的Silverlight 4应用程序,它基本上由一个包含标签和组合框的网格组成。当我单击标签时,我将其替换为第二个文本框,以便我可以编辑标签(就像在VS2010中编辑Silverlight控件的名称一样)。
我在文本框上有一个LostFocus事件处理程序,当控件失去焦点时会结束编辑(恢复更新的标签)。麻烦的是,用户倾向于在完成编辑而不是在另一个控件上点击面板(或点击Enter,这也是支持)。
我尝试向面板添加鼠标左键事件处理程序。但是,只有当文本框没有焦点时才会触发(我猜文本框是否捕获了鼠标?)
是否有方法可以识别单击非输入控件,以便我终止编辑模式?
答案 0 :(得分:2)
您可以使用以下代码订阅Grid的MouseLeftButtonDown路由事件:
panel.AddHandler(UIElement.MouseLeftButtonDownEvent,
new MouseButtonEventHandler(panel_OnMouseLeftButtonDown), true);
与常见事件不同,路由事件从最内层控件冒泡到其父级,然后传递给祖父母等。同样,您可以订阅面板的父级来拦截面板外的点击。