4

にホストされている UserControl がありElementHostます。 ユーザーがEnterキーを押すかダブルクリックすると、行の新しいウィンドウが表示され(モーダルなし)、そのウィンドウが閉じられると、ElementHostを含むウィンドウが再びアクティブになります
DataGrid
問題は、DataGrid がフォーカスを失うことです。

Snoop は、ビジュアル ツリーが次の構造を持つことを示しました。

AdornerDecorator -> AvalonAdapter -> My UserControl.
Snoop は、アクティブ化後に AdornerDecorator にプロパティがあることを示しています

IsFocusable = false
IsFocused = false
IsKeyboardFocused = true
IsKeyboardFocusWithin = true

私にとって絶対的なナンセンスとは何ですか。
ユーザーが Tab キーまたは矢印キーを押すと、最初に有効になった UserControl の要素がフォーカスを受け取ります。

この投稿を読みましたが、満足できません:

フォーカスは、WPF と Windows フォームでは動作が異なります。また、このあたりで修正できなかった粗いエッジがいくつかありました。WindowsFormsHost 内にフォーカスがあり、フォームを最小化/復元するか、モーダル ダイアログを表示すると、WindowsFormsHost 内のフォーカスが失われる可能性があります。

それで?リラックスして幸せになれますか?
そして、非常に残念なのは、他のアプリケーションで問題を再現できないことです.

このような奇妙な行動の理由を説明できる人はいますか? いくつかの回避策が提供される場合があります。

4

1 に答える 1

2

これは既知のバグです: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7d41218e-c2bb-4957-b0b4-aa24efc4d8c2/

残念ながら、接続への参照は死んでいます。

このバグを回避するIsVmFocusedには、ViewModel にプロパティを追加し、要素のプロパティの変更をリッスンして VM のプロパティをバインドするFocusHelper.IsFocused添付プロパティを作成する必要がありました。 この(タスク関連の)SOの質問でxamlを見ることができます:DataBindingのコンテキストでキャッシュされたアクセサーとは何ですか?IsFocused

于 2013-01-23T17:24:10.687 に答える