2010-08-04 102 views
4

我在我的視圖中有一個ContentControl,它是我的viewmodel的CurrentItem屬性的數據綁定。通過CurrentItem公開的對象都有自己的DataTemplate。如何在鍵盤焦點更改時將其設置爲ContentPresenter的內容?

當CurrentItem屬性更改時,將顯示該項目的相應DataTemplate,因爲它應該是。但是,我無法找到將鍵盤焦點設置爲DataTemplate內容的方法。

即使我手動將鍵盤焦點設置爲DataTemplate,如果CurrentItem屬性更改(並且實例化新模板),焦點將丟失(FocusManager.GetFocussedElement返回null)。

如何將鍵盤焦點設置爲ContentPresenter更改時的內容?

回答

0

我相信你可以在你的ContentControl或ContentPresenter上使用LayoutUpdated事件。每當Content/ContentTemplate/etc發生變化時都會觸發。

或者,您可以從ContentControl派生類,然後覆蓋OnContentChanged,OnContentTemplateChanged等方法。然後,您需要搜索可視化樹並設置焦點。您可能需要使用Dispatcher來延遲焦點設置代碼。

相關問題