WPF ユーザーコントロールを既存の WinForms プロジェクトに追加し、WPF ユーザーコントロールをドッキングしてスペース全体を埋めようとしています。
ボタンのクリックに応答して、WinForms UserControls を親フォーム (パネル) にロードする現在のフレームワークがあります。これは私がフックしようとしている場所です - 現在ロードされている WinForms UserControl には ElementHost があります。
階層:
- Form1.cs - WinForms UserControls を動的にロードするパネルが含まれています
- WinForms UserControl - ElementHost を含む
- WPF ユーザー コントロール
ElementHost には、Dock が Fill に設定され、その Child プロパティが ucReport に設定されています。これは WPF UserControl であり、次のマークアップがあります (最上位のデザインのみが含まれています)。
<UserControl x:Class="MyClassName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TabControl HorizontalAlignment="Left" Name="tabControl1">
<TabItem Header="Header1">
...The interesting stuff goes here
</TabItem>
</TabControl>
</UserControl>
フォームのサイズを変更すると、UserControl のコンテンツは垂直方向に拡張されますが、水平方向には、コンテンツを収容するのに十分な大きさしか拡張されません。
デザイナーで WinForms UserControl (ElementHost を持つもの) を表示すると、問題が明らかになります。指定された WPF コンテンツがレンダリングされ、上から下に塗りつぶされますが、左から右には塗りつぶされません。
ElementHostである親コンテナを満たすためにそれを取得するために(おそらくUserControl宣言で)設定する必要があるのはXAMLの何かだと思います-私はプロパティを見つけることができません。
誰かが私を啓発してくれますか?