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