2010-11-24 45 views
1

我想在用戶在Silverlight中的DataGrid中選擇一行時顯示一個自定義確認消息框(ChildWindow)。消息框只有2個按鈕,一個是和一個不是。當用戶單擊否時,我想要恢復DataGrid中以前選擇的項目。我已經能夠完成所有這些。如何從silverlight數據網格的selectionchanged事件顯示自定義消息框?

問題是,當消息框出現並且我單擊「否」並且我恢復先前選擇的項目時,用戶試圖選擇的項目仍保留在MouseOver可視狀態,直到將鼠標移動到其他行上。

是否有任何已知的解決方法DataGrid的這種不尋常的行爲,或者這可能是一個合法的控制錯誤?我已經完成了我的研究,至今我還沒有發現任何東西。

任何幫助,將不勝感激。

謝謝!

回答

0

這是經典的鼠標進入/離開陷阱,這在很多Silverlight領域以及其他許多框架中都很常見。假定鼠標進入和退出事件會成對出現,但是當別的東西劫持鼠標事件時它們不會發生。

這就是這裏發生的事情DataGridRow簡單地使用標準鼠標事件跟蹤鼠標。但是,當您在鼠標懸停狀態下顯示子窗口時,不會再有鼠標事件進入該行。當你關閉子窗口時,鼠標已經在行外,所以它仍然沒有事件發生。

可能的解決方法是向孩子表明窗口前,與該行自己的視覺狀態撥弄: -

VisualStateManager.GotoState(someRow, "NormalSelected", false); 

並不完美,但可能不夠好。

+0

工程太棒了!謝謝! – killercolt 2010-11-25 14:02:07

相關問題