Стыковка с ElementHost

Я пытаюсь добавить пользовательский элемент управления WPF в существующий проект WinForms и заставить WPF UserControl закрепить и заполнить все пространство.

Существует текущая структура, которая загружает WinForms UserControls в родительскую форму (в панель) в ответ на нажатие кнопки. Вот где я пытаюсь подключиться - пользовательский элемент управления WinForms, который в настоящее время загружается, будет иметь ElementHost.

Иерархия:

  • Form1.cs - содержит панель, которая динамически загружает пользовательские элементы управления WinForms.
    • WinForms UserControl - содержит ElementHost
      • WPF UserControl

У 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 отображается и заполняется сверху вниз, но не слева направо.

Я считаю, что в XAML нужно что-то установить (возможно, в объявлении UserControl?), Чтобы заставить его заполнить родительский контейнер, которым является ElementHost - я просто не могу найти свойство.

Кто-нибудь меня просветит?


person Paul Prewett    schedule 11.06.2009    source источник


Ответы (1)


Измените HorizontalAlignment на Stretch или полностью избавьтесь от него.

person Ana Betts    schedule 11.06.2009