如何从包含它的UserControl内部确定我的StackPanel何时失去焦点?

时间:2010-09-21 22:23:07

标签: silverlight silverlight-4.0

我有一个Silverlight UserControl,它包含一个StackPanel,反过来,它包含一些UserControls。我希望能够确定用户何时在最外面的StackPanel外部单击/标签(即当StackPanel失去焦点时),并且我希望能够从我的UserControl内部处理它。有没有人对如何实现这一点有任何建议?

当其中一个组件失去焦点时,我尝试调度一个线程,该线程将查看主UserControl中的任何控件是否获得了焦点,然后告诉我是否仍在我的控制范围内。麻烦的是,我已经在UI线程上,所以Dispatcher立即执行了我的操作,而我还在处理LostFocus。所以,这不起作用。

我尝试使用FocusManager并确定焦点控件是否是我的StackPanel的子项。这不起作用,因为GetFocusedElement()返回了我正在失去焦点的元素。

有没有人有任何其他想法?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

这可能不是最优雅的解决方案,但为什么不在StackPanel本身捕获OnLostFocus事件?在处理程序中,引发父用户控件侦听的另一个事件。这样,您不必担心调度或线程。保持简单。