2011-07-22 9 views
1

メニューバーとステータスバーを持つメインのWPFウィンドウがあります。私はこのウィンドウをMDIウィンドウとして動作させたい。メニューバーの下からステータスバーのすぐ上にある領域全体を定義して、他のWindowsを表示したいと考えています。私はPageやPanelのようなものを定義したい。新しい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プロパティを使用します。 Windowではなく、UserControls、PanelまたはContentControlを使用することを忘れないでください。

さらに詳しい情報が必要な場合は、CodePlexのPrismをご覧ください。それはあなたにとって不幸なことかもしれませんが、実際には考え抜かれた軽量のフレームワークです。

EDIT:DockPanelでの子供の順序を修正しました。

+0

WPFでMDIがないとオーバーヘッドではありませんか?ビジネスアプリ。 MDIなしで考えることはできません。 WPFは愛好家のためのおもちゃに見えます。 – RKh

+0

Erh ..ハァッ? WPFは本格的なUIプラットフォームです...私はWinFormアプリケーションの周りでサークルで動くことができます...彼らはMDIを達成する別の方法があります。 – Goblin

+0

コンテンツエリアにページを追加できますか? – RKh

1

私は基本プロトタイプアプリケーションでhttp://wpfmdi.codeplex.com/を使用しました。ユーザーコントロールとしてコンテンツを作成し、ウィンドウでラップします。

私はツールボックスでこれを使用したことはありません。

関連する問題