2017-10-18 22 views
0

別のLoginWindow、RegistrationWindow、およびMainDashboardWindowを持つWPF Model-View-ViewModelを作成しようとしています。マルチウィンドウWPFアプリケーションでViewModelを切り替える方法は?

他のビューを含むApplicationViewModelとApplicationViewを使用してMVVMを使ってナビゲートすると、Rachel Limのソリューションをすでに読んでいますが、何かを理解するのに問題があります。

enter image description here

私は、ログインウインドウやRegistrationWindowのDataContextのを設定することにより、(それらのどれもBaseViewModelから継承しません)LoginViewModelとRegistrationViewmodelを使用して計画し、アプリケーションにログインした後にのviewmodel年代を切り替えることMainDashboardViewModelを使用して開始されましたMainDashboardWindow。

これは正しい方法ですか? これが正しい方法でない場合は、ウィンドウ間で切り替えることができるアプリケーション全体のビューモデルを実装するにはどうすればよいですか(一度に1つのウィンドウしか開きません)?

答えて

0

MVVMを正しく実装するには、View、Model、ViewModelを理解する必要があります。

ビューは、どのコードも持たないUIです。 ViewのDataContextはViewModelクラスであり、1つのViewは1つのViewModelに関連付けられる必要があります。 XAMLコードでDataContextを設定する必要があります。

モデルには、データとそのデータを処理するいくつかのメソッドが含まれています。あなたのためのモデルを設計するときは、リポジトリパターンを使用することを強くお勧めします。

ViewModelは、ビジネスメソッドを置く場所です。すべてのViewModelは、BaseViewModelから実装する必要があります。また、何かについて知ってはいけません。

3つの異なるビュー、3つのビューの3つのビューモデルを作成する必要があります。

ログインウィンドウから始めましょう。まず、ログインビューにどのViewModelを指定するかを指定する必要があります。

<Window x:Class="SampleApplication.LoginWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:SampleApplication.ViewModels" 
    Title="Login" Height="350" Width="525"> 
<Window.DataContext> 
    <local:LoginViewModel/> 
</Window.DataContext> 

ログインウィンドウには2つのボタンがあります。 1つはLoginで、onはRegisterです。各ボタンはViewModelのRelayCommandにバインドする必要があります。このようにすれば、MVVMを適切に実装できます。ウィンドウ間を移動するには、現在のウィンドウを閉じて新しいウィンドウを開く必要があります。ウィンドウを閉じるには、see thisウィンドウを開くには、ビューのオブジェクトを作成して電話するだけですViewObject.Show();

関連する問題