0

Composite Applicaation Library について学習していて、質問に出くわしました: CAL を使用して複数ページのアプリケーションを構築することは可能ですか?

私が見たすべての例では、領域が定義された単一のページを使用しています。

複数のシェルのようなものを使用できますか? - そうすることが CAL の方法論に反する場合は?

また、CAL を使用して複数ページのアプリを作成しても問題ありませんか?それとも単一ページのアプリのみですか?

また、複数のシェルまたはおそらく複数の Bootstrappers が可能であり、それを行う正しい方法を示すサンプルが高く評価されています。

ありがとう

4

1 に答える 1

0

Prism は複数ページのアプリケーションに使用できます。

1 つの方法はPrism 開発者ガイドで説明されています。開発者を支援するクイックスタートも提供されています。

ただし、この方法を実装するには非常に重いと思います。Prism でのマルチページングの問題に直面したとき、私は通常、より単純な解決策を好みます。

  • 最初に、シェルで、単一のグリッド内の ContentControls 内に領域を定義して、これらの ContentControls が「同じページ上」になるようにします。グリッドはページの境界を定義し、必要に応じてウィンドウ全体に拡張できます。
  • 次に、適切なタイミングでシェルの各 ContentControl/Region の DataContext をロードする責任を負う NavigationManager インスタンスがあります。毎回、1 つの ContentControl の DataContext が満たされ、その他はすべて null です。
  • 最後に、RegisterViewWithRegion のおかげで、各リージョンのモジュール初期化時に、それを埋めるビューを挿入します。重要なことはこれです。

    <UserControl>
        <UserControl.Resources>
            <DataTemplate DataType="{x:Type my:ViewModel}">
                ...
            </DataTemplate>
        </UserControl.Resources>
        <ContentControl Content="{Binding }" />
    </UserControl>
    

このように、DataContext が null の場合、ビューは表示されないため、ナビゲーション. ナビゲーション メソッドを呼び出すには、開発者ガイドで説明されているように、グローバルに利用可能なコマンドを使用できます。これにより、ナビゲーション ボタンのコマンドを任意のモジュールのナビゲーション コマンドに直接バインドできます。

于 2013-07-12T10:04:21.047 に答える