2011-07-22 47 views
1

我有一個帶有菜單欄和狀態欄的主要WPF窗口。我希望這個窗口充當MDI窗口。我想從菜單欄下方將整個區域定義到狀態欄上方,我將在其中顯示其他窗口。我想定義一個類似頁面或面板的東西。當我添加一個新的WPF表單時,我希望它出現在主窗口中包含的這個位置上。這個怎麼做?將頁面代碼保存在單獨的文件中

回答

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

然後在你的代碼,只需要一個主窗口的引用 - 和使用MainContentGoesHere屬性注入的意見。只要記住使用UserControls,Panels或ContentControl而不是Window,那麼當您注入它們時,Window不能有父級。

如果你想要更多的東西 - 看看CodePlex上的Prism。這對你來說可能是矯枉過正,但它實際上是一個經過深思熟慮的輕量級框架。

編輯:修正了DockPanel中Children的順序。

+0

這不是沒有MDI在WPF中的開銷嗎?商業應用程序。沒有MDI就無法想象。 WPF看起來是愛好者的玩具。 – RKh

+0

呃..呃? WPF是一個全面的UI平臺......我可以圍繞一個WinForm應用程序運行......他們只是有一種不同的方式來實現MDI。 – Goblin

+0

我可以在內容區域添加頁面嗎? – RKh

1

我在基本原型應用程序中使用http://wpfmdi.codeplex.com/。將用戶控件創建爲內容,然後將其封裝在一個窗口中。

雖然我從來沒有使用它的工具箱。

相關問題