0

私は WPF/XAML を初めて使用するので、ご容赦ください。モデル ビュー コントローラーにできるだけ近いように、様式化とデータ バインディングを適切に分離する MainWindow.xaml / App.xaml ペアを作成しようとしています。ここのところ:

  • すべての書式設定 (フォント、マージンなど) を含む styles.xaml があります。プロジェクト内のすべての WPF フォームに適用できるように、app.xaml の Application.Resources から参照されます。
  • モデル データ コレクションは App のメンバー変数として存在し、App は GetX() アクセサー関数を介してそれらを公開します。
  • mainwindow.xaml には、ビュー構造とバインド情報が含まれています。これは次のように行われます。

    ObjectDataProvider x:Key="AppX" MethodName="GetX" ObjectInstance="{x:Static local:App.Current}"

mainwindow.xaml にバインド情報が含まれているという事実は、コントローラー (アプリ) の役割であるため、悪いことです。残念ながら、WPF デザイナーの制限の 1 つは、(たとえば) 2 つのキーなしの Resources 参照 (1 つはビュー スタイル用、もう 1 つはデータ バインディング スタイル用) を持つことができないことです。同様に、app.xaml の Resources セクションに、styles.xaml 参照と一連のデータ バインディング スタイルの両方を含めることはできません。

理論的には、アプリのスタートアップ ハンドラーからメイン ウィンドウを手動でインスタンス化し、コードでバインディングを行うこともできますが、それは 2 つの点で WPF の精神に違反します。バックグラウンド; 可能であれば、バインディングはコードよりも XAML で行う方が適切です。メイン ウィンドウが作成されたことをアプリに通知してバインディングを実行できるようにする方法があれば、それは悪くありませんが、私は何も見たことがありません (アプリを呼び出した後にメイン ウィンドウを除く)。読み込みますが、それはビューの責任ではありません)。

だから私は手足にちょっと出ています。「WPFの方法」を実行しながらMVCに適切に準拠する方法を知りません-デフォルトでは、VSデザイナーがビュー、ビューのスタイル設定、およびビューのミッシュマッシュを持つモノリシックウィンドウXAMLを作成するようですコントローラ。これをより適切に行う方法についての説明や、このトピックに関する優れた Web サイトへのリンクを歓迎します。

4

1 に答える 1

2

MVVMは本質的にMVCです。MVVMでは、ビューとビューモデルへの追加の分離があり、ビューはUIのコントロールにすぎず、ビューモデルはビューのデータとロジックを保持します。さらに、MVVMでは、ビューとビューモデルの関係は、単独で、MVCパターンとして表示することもできます。ここで、M = ViewModel、V = View、C=DataBindingです。

于 2012-08-26T00:17:51.503 に答える