2010-04-29 21 views
1

我有一個小型Silverlight 4應用程序,它基本上由包含標籤和組合框的網格組成。當我點擊標籤時,我將其替換爲第二個文本框,以便我可以編輯標籤(很多方式可以在VS2010中編輯Silverlight控件的名稱)。單擊面板時捕獲Silverlight 4事件

我在文本框上有一個LostFocus事件處理程序,當控件失去焦點(還原更新後的標籤)時它將結束編輯。麻煩的是,用戶在完成編輯時傾向於點擊面板,而不是在另一個控件上(或者支持Enter的命令)。

我試着給面板添加一個鼠標左鍵向下的事件處理程序。但是,只有當文本框沒有焦點時纔會觸發(我猜文本框捕獲了鼠標?)

有沒有一種方法可以識別出一個非輸入控件被點擊,這將使我能夠終止編輯模式?

回答

2

您可以訂閱Grid的MouseLeftButtonDown路由事件中使用下面的代碼:

panel.AddHandler(UIElement.MouseLeftButtonDownEvent, 
    new MouseButtonEventHandler(panel_OnMouseLeftButtonDown), true); 

不同於常見的事件路由事件是從最裏面的控制到其父冒泡,然後祖父母等。您可以訂閱以同樣的方式以便面板的父級攔截面板外的點擊。