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

时间:2011-07-22 18:50:10

标签: wpf

我有一个带有菜单栏和状态栏的主WPF窗口。我希望这个窗口充当MDI窗口。我想从菜单栏下方到状态栏上方定义整个区域,我将在其中显示其他Windows。我想定义一个Page或Panel之类的东西。当我添加一个新的WPF表单时,我希望它出现在主窗口中包含的这个位置。怎么做?

2 个答案:

答案 0 :(得分:1)

我在基本原型应用中使用了http://wpfmdi.codeplex.com/。将您的内容创建为用户控件,然后将其包装在窗口中。

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

答案 1 :(得分:0)

简单版本:

    <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>

代码隐藏:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    public object MainContentGoesHere
    {
        get { return _content.Content; }
        set { _content.Content = value; }
    }
}

然后在你的代码中只有一个MainWindow的引用 - 并使用MainContentGoesHere属性来注入视图。只需记住在注入时使用UserControls,Panels或ContentControl而不是Window,因为Window不能拥有父级。

如果您想要更精彩的东西 - 请查看CodePlex上的Prism。这对你来说可能有点过头了,但它实际上是一个经过深思熟虑的轻量级框架。

编辑:修正了DockPanel中儿童的顺序。