私は問題をLinqPadに落として実行することができます。MDI内のElementHostのWPFコントロールを介してタブ移動すると、他のMDI子にフォーカスが移動する
問題は、WinFormsのMDI子内でホストWPFのコントロールをするとき、私のタブです - フォーカスが私の例では、すべてのWinFormsである第二MDI子(にジャンプした時点で、最後までテキストボックスの間でフォーカスが移動し、テキストボックス間のタブ移動がうまく機能します。)
どのようにして、1つのMDI子から別のMDI子へのWPFタブ移動を防止し、代わりにWPFテキストボックスにフォーカスを維持できますか。 (ElementHostはその後、理想的にフォーカスが戻って最初のWinFormsに、その後のWinFormsからWPFへのリサイズに旅行をするだろう後のWinFormsコントロールが/の前に表示された場合。)
var mdiParent = new Form();
mdiParent.IsMdiContainer = true;
mdiParent.Width = 800;
mdiParent.Height = 600;
mdiParent.Show();
var otherChild = new Form();
otherChild.MdiParent = mdiParent;
var flow = new FlowLayoutPanel();
flow.Controls.Add(new TextBox());
flow.Controls.Add(new TextBox());
flow.Controls.Add(new TextBox());
otherChild.Controls.Add(flow);
otherChild.Show();
var form = new Form();
form.MdiParent = mdiParent;
var elementHost = new ElementHost();
elementHost.Dock = DockStyle.Fill;
form.Controls.Add(elementHost);
string xaml = @"
<StackPanel xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
<TextBox />
<TextBox />
<TextBox />
</StackPanel>
";
elementHost.Child = (UIElement)System.Windows.Markup.XamlReader.Load(new XmlTextReader(new StringReader(xaml)));
form.Show();