簡體   English   中英

在多窗口WPF應用程序中如何在ViewModels之間切換?

[英]How to switch between ViewModels in multi-window WPF application?

我正在嘗試創建具有單獨的LoginWindow,RegistrationWindow和MainDashboardWindow的WPF Model-View-ViewModel。

我已經閱讀了瑞秋·林(Rachel Lim)關於使用包含其他視圖的ApplicationViewModel和ApplicationView進行MVVM導航的解決方案,但是我很難理解某些內容。

在此處輸入圖片說明

我打算通過設置LoginWindow和RegistrationWindow的DataContext使用LoginViewModel和RegistrationViewmodel(它們都不會繼承自BaseViewModel),然后登錄到應用程序后,開始使用MainDashboardViewModel在MainDashboardWindow上的視圖模型之間切換。

這是正確的方法嗎? 如果這不是正確的方法,如何實現可以在窗口之間切換的應用程序范圍的視圖模型(一次只能打開一個窗口)?

要正確實施MVVM,您需要了解什么是View,Model和ViewModel。

View是沒有任何代碼的UI。 View中的DataContext是ViewModel類,一個View應該與一個ViewModel關聯。 您應該通過XAML代碼設置DataContext。

模型是包含數據和用於處理該數據的一些方法的類。 我強烈建議您在為程序設計模型時使用存儲庫模式。

ViewModel是您在其中放置業務方法的地方。 所有ViewModel必須從BaseViewModel實現,並且不知道關於View的任何信息。

在您的情況下,您需要創建3個不同的視圖,3個視圖的3個ViewModel。

讓我們從您的登錄窗口開始。 首先,您需要通過在“登錄”視圖上進行指示來指定用於登錄窗口的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個按鈕。 一個是登錄,另一個是注冊。 每個按鈕必須與ViewModel中的RelayCommand綁定。 通過這種方式,您可以正確地實現MVVM。 要在各個窗口之間導航,必須關閉當前窗口並打開一個新窗口。 要關閉窗口, 請參見this ,要打開窗口,只需創建視圖的對象並調用ViewObject.Show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM