Как мне вставить одну форму WPF в другую? - PullRequest
4 голосов
/ 14 февраля 2009

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

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

Ответы [ 4 ]

7 голосов
/ 14 февраля 2009

Когда вы используете Frame или NavigationWindow , вы можете загрузить его xaml Pages и даже 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>
4 голосов
/ 15 февраля 2009

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

2 голосов
/ 14 февраля 2009

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

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

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

1 голос
/ 19 октября 2016

Я предпочитаю сделать это с помощью userControl Сначала создайте пользовательский контроль enter image description here

после, включить ссылку на этот пользовательский контроль в другом месте enter image description here

где-нибудь в доме ...

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