Как встроить одну форму WPF в другую?


Я хотел бы иметь форму master WPF с элементом управления tab, где каждая вкладка содержит одну независимую форму WPF. Эти формы не зависят друг от друга, поэтому я подумал, что будет проще разработать каждую из них отдельно, а затем просто встроить их в мастер-форму.

Количество форм известно, поэтому нет необходимости в динамической системе плагинов.

4 4

4 ответа:

Ознакомьтесь с этой статьей Джоша Смита в MSDN. Это отличное решение для вашего вопроса.

Приложения WPF с шаблоном проектирования Model-View-ViewModel

Http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Когда вы используете фрейм или NavigationWindow, Вы можете загрузить различные страницы xaml и даже html. Вы также можете сделать его похожим на браузер с прямой и обратной навигацией. См. http://msdn.microsoft.com/en-us/library/ms750478.aspx

Вы можете поместить рамку на каждую вкладку и заставить ее загрузить определенную страницу.

<Window x:Class="PluginApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <DockPanel>
        <Frame Name="frame" NavigationUIVisibility="Visible" Source="SomePage.xaml" />
    </DockPanel>
</Window>

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    WindowTitle="Page Title"
    WindowWidth="500"
    WindowHeight="200">
  Hello world
</Page>

Сделайте дочерние формы производными от UserControl, в главной форме добавьте элемент управления tab с одним из этих элементов управления пользователя внутри каждой вкладки.

Я предпочитаю делать это с userControl Сначала создайте пользовательский элемент управления Введите описание изображения здесь

После этого включите ссылку на этот UserControl в другом месте Введите описание изображения здесь

В любом месте дома frmHome...

 <DockPanel>
      <Entity:ucContactList/>
 </DockPanel>