2017-08-16 12 views
0

私はWPFアプリケーションを作成しています。アプローチ:メニュー、ヘッダー、フッター、ページコンテンツセクションを含む、Web SPAアプリケーションのような単一ウィンドウアプリケーション。次に、ページでは、少なくともページコンテンツを定義する必要があります。オプションでメニュー、フッターにいくつか追加します。 ASP.NETのマスターページと似ています。WPFグローバルレイアウトの仕方

ASP.NETのマスターページのようなベストプラクティスは、これを達成する方法はありますか?私はDRYを尊重したいと思い、グリッドをメニュー、ヘッダなどを各ページに定義したくない。

ありがとうございます。

+0

通常は、固定デザインのウィンドウが1つしかなく、内部のコンポーネントを入れ替えて見ているものを変更します。マスターページは、レイアウト全体を再構築する必要がある場所に移動していないため、実際にWPFには意味をなさない。 – poke

+0

MVVMは... ContentControl/ItemsControl + data templatesを行います。 – Sinatr

答えて

0

WPFでは、マスターページの使用をサポートしていません。 ASP.Netはもともと、WPFアプリケーションを作成する方法のように、マスターページのようなより多様なオプションを使用して、Webアプリケーションを作成するための簡単な方法として作成されました。

ただし、カスタムコントロールの助けを借りてWPFでこれを実現するいくつかのベストプラクティスがあります。

たとえば、タイトルアブストラクトとコンテンツを含むカスタムコントロール。

namespace MasterPages.Master 
{ 
    public class Master : Control 
    { 
    static Master() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(Master), 
     new FrameworkPropertyMetadata(typeof(Master))); 
    } 

    public object Title 
    { 
     get { return (object)GetValue(TitleProperty); } 
     set { SetValue(TitleProperty, value); } 
    } 

    public static readonly DependencyProperty TitleProperty = 
     DependencyProperty.Register("Title", typeof(object), 
     typeof(Master), new UIPropertyMetadata()); 

    public object Abstract 
    { 
     get { return (object)GetValue(AbstractProperty); } 
     set { SetValue(AbstractProperty, value); } 
    } 

    public static readonly DependencyProperty AbstractProperty = 
     DependencyProperty.Register("Abstract", typeof(object), 
     typeof(Master), new UIPropertyMetadata()); 

    public object Content 
    { 
     get { return (object)GetValue(ContentProperty); } 
     set { SetValue(ContentProperty, value); } 
    } 

    public static readonly DependencyProperty ContentProperty = 
     DependencyProperty.Register("Content", typeof(object), 
     typeof(Master), new UIPropertyMetadata()); 
    } 
} 

フル例はである:

https://www.codeproject.com/Articles/23069/WPF-Master-Pages

+1

答えをありがとう。私はこの記事と一緒にあなたの答えに従っています:https://stackoverflow.com/questions/18140937/multiple-content-presenters-in-a-wpf-user-control これは私の問題を解決し、良いようですどのようにWPFのアプリをDRYに保ち、よく管理されているソリューション – Luke1988

関連する問題