2

WPF MVVM アプリケーションで次の階層ナビゲーション モデルを実現したいと考えています。

ShellView
    Page1View
       Subpage1View
           Subpage2View
       Subpage3View
    Page2View
        ...

つまり、Shellview には、Page1View と Page2View をアクティブ化/非アクティブ化するボタンがあります。Page1View には Subpage1View と Subpage3View をアクティブにするボタンがあり、Subpage1View には Subpage2View をアクティブにするボタンがあります。

サブページはどこに表示されますか? ナビゲーション モデルはビュー構造に正確にマップする必要がありますか? つまり、ShellView に ContentControl (ActiveItem という名前) があり、アクティブにすると Page1View と Page2View が表示されます。Subpage1View をシェルの ActiveItem ContentControl または親ビュー (Page1View) に表示する必要がありますか?

  1. ShellView にサブページを表示する必要がある場合、適切にアクティブ化するにはどうすればよいですか? それをアクティブにするボタンは、シェルではなく Page1View にあるためです。

  2. 親ビュー (Page1View) にサブページを表示する必要がある場合は、Page1View に ActiveItem ContentControl を作成し、必要になる前に非表示にする必要があります。どのように ?また、親ビューのスクロールバーが問題になる可能性があると思います。

お知らせ下さい!

Caliburn.Micro 1.3、.NET 4、WPF を使用。

ありがとう!

4

2 に答える 2

2

一緒にデモをしました。それがまさにあなたが探しているものかどうかはわかりません。覚えておくべきことは、 Screensand /orConductorsを含むことができます。そのため、ネスティングや複雑な画面構成を行うことは非常に簡単です。ScreensConductors

この例には、ShellView2 つのボタンを持つ と がありContentControlます。 Page1ViewModelまた、2 つのボタンとContentControl.

Page1またはPage2ボタンをクリックするとShellView、適切な がアクティブになりますPage。がアクティブ化され、適切なPageをクリックSubPage1またはアクティブ化すると、同じことが当てはまります。SubPage2SubPage

https://bitbucket.org/dbeattie/cmwpfnavsample/src

于 2012-04-07T00:50:01.650 に答える
1

サブページは次のように使用します。

  • サブページ自体は、ページ ビューにある ContentControl に表示されます。したがって、アクティブなページを表示するための ContentControl を持つシェル ビューがあり、このアクティブなページには、アクティブなサブページを表示するための別の ContentControl があります。
  • 現在のページのサブページのリストをシェル ビュー自体に表示するため (レイアウトのため)、ActiveItem.Items にバインドされた ItemsControl があります (ActiveItem が Conductor から継承されたページである場合)。

そのため、ItemsControl を使用して現在アクティブなページまたはサブページを選択し、ContentControl を使用して表示します。選択したサブページは、その親ページ ビューを介して表示されることに注意してください。

ただし、基本的には、サブページをシェル ビュー (ActiveItem.ActiveItem にバインドされた ContentControl) に直接表示するか、別の方法を使用するかはユーザー次第です。

サブページは含まれていませんが、Coprojectサンプル アプリケーションが役立つ場合があります。もっと複雑にして、後でサブページを追加する予定です。

広告 2. ContentControl を非表示にする必要はないと思います。サブページが選択されていない場合は空になります。それにもかかわらず、非表示にする場合は、ValueConverter (オブジェクトから Visibility、オブジェクト == null の場合は Visibility.Collapsed、それ以外の場合は Visible) を使用し、ActiveItem ContentControl の Visibility プロパティを ActiveItem に再度バインドすることをお勧めします。

于 2012-04-06T12:09:14.190 に答える