Wpf 将页面代码保存在单独的文件中

Wpf 将页面代码保存在单独的文件中,wpf,Wpf,我有一个带有菜单栏和状态栏的WPF主窗口。我希望此窗口充当MDI窗口。我想定义从菜单栏下方到状态栏上方的整个区域,在那里我将显示其他窗口。我想定义一个类似页面或面板的东西。当我添加一个新的WPF表单时,我希望它出现在主窗口中包含的这个位置上。如何做到这一点?简单版: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pres

我有一个带有菜单栏和状态栏的WPF主窗口。我希望此窗口充当MDI窗口。我想定义从菜单栏下方到状态栏上方的整个区域,在那里我将显示其他窗口。我想定义一个类似页面或面板的东西。当我添加一个新的WPF表单时,我希望它出现在主窗口中包含的这个位置上。如何做到这一点?

简单版:

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="File"/>
            <MenuItem Header="Edit"/>
            <MenuItem Header="Help"/>
        </Menu>
        <StatusBar DockPanel.Dock="Bottom"/>
        <ContentControl Name="_content"/>
    </DockPanel>
</Window>
然后,在代码中只需引用一个MainWindow,并使用MainContentGoesher属性注入视图。只要记住,当您注入UserControls、Panels或ContentControl时,不要使用Window,因为Window不能有父控件

如果你想要更别致的东西,看看CodePlex。对您来说,这可能有些过分,但它实际上是一个经过深思熟虑的轻量级框架

编辑:修复了DockPanel中子项的顺序。

简单版本:

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="File"/>
            <MenuItem Header="Edit"/>
            <MenuItem Header="Help"/>
        </Menu>
        <StatusBar DockPanel.Dock="Bottom"/>
        <ContentControl Name="_content"/>
    </DockPanel>
</Window>
然后,在代码中只需引用一个MainWindow,并使用MainContentGoesher属性注入视图。只要记住,当您注入UserControls、Panels或ContentControl时,不要使用Window,因为Window不能有父控件

如果你想要更别致的东西,看看CodePlex。对您来说,这可能有些过分,但它实际上是一个经过深思熟虑的轻量级框架

编辑:修复了DockPanel中子对象的顺序。

我在基本原型应用程序中使用过。将内容创建为用户控件,然后将其包装在窗口中

不过,我从未在工具箱中使用过它。

我在基本原型应用程序中使用过它。将内容创建为用户控件,然后将其包装在窗口中


不过,我从来没有在工具箱中使用过它。

如果WPF中没有MDI,这不是一种开销吗?商业应用程序。没有MDI就无法考虑。WPF看起来是业余爱好者的玩具。。呵呵?WPF是一个成熟的UI平台。。。我可以绕着WinForm应用程序转圈。。。他们只是有一种不同的实现MDI的方式。我可以在内容区域中添加一个页面吗?是的,如果它是窗口的唯一子级(页面只能有窗口或框架作为父级)。。。因此,对于我的示例,您必须将DockPanel放在页面内。我添加了一个新页面,但当我尝试通过工具箱删除控件时,工具箱被禁用。如果WPF中没有MDI,这不是一种开销吗?商业应用程序。没有MDI就无法考虑。WPF看起来是业余爱好者的玩具。。呵呵?WPF是一个成熟的UI平台。。。我可以绕着WinForm应用程序转圈。。。他们只是有一种不同的实现MDI的方式。我可以在内容区域中添加一个页面吗?是的,如果它是窗口的唯一子级(页面只能有窗口或框架作为父级)。。。因此,对于我的示例,您必须将DockPanel放在页面内。我添加了一个新页面,但当我试图通过工具箱删除控件时,工具箱被禁用。