簡介
在 WPF MVVM 應用程式中,視圖間的導航至關重要。本文旨在解決從一個視圖導覽到另一個視圖的問題,例如從視圖 1 切換到視圖 2 及後續視圖。
ViewModelLocator 和導航
提供的程式碼範例重點介紹了 ViewModelLocator 模式。但是,它提出了關於其實現的問題。程式碼中提到的 CreateMain() 函數未定義,使用戶對其用法和切換視圖的機制感到困惑。
簡化的 MVVM 方法
為了簡化 MVVM 的實現,我們提出了一種替代方法,該方法利用 INotifyPropertyChanged 介面和 DataTemplates 將視圖綁定到視圖模型。
步驟 1:定義 BaseViewModel 類別
建立一個包含公共屬性和命令的基類 BaseViewModel。所有視圖模型都可以擴充此類。
<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; }</code>
步驟 2:在 App.xaml 中建立綁定
在 App.xaml 中,定義 DataTemplates 以將視圖模型連接到其各自的視圖。
<code class="language-xml"><DataTemplate DataType="{x:Type ViewModels:MainViewModel}"><MainView></MainView></DataTemplate></code>
步驟 3:使用 ContentControl
使用 ContentControl 和綁定到 ViewModel 屬性來顯示視圖模型。
<code class="language-xml"><ContentControl Content="{Binding ViewModel}"></ContentControl></code>
步驟 4:在 MainViewModel 中切換視圖
要切換視圖,請在 MainViewModel 中設定 ViewModel 屬性。
<code class="language-csharp">ViewModel = new PersonViewModel();</code>
步驟 5:從其他視圖進行導航
若要啟用從子視圖進行視圖導航,請在 MainViewModel 中定義指令,並透過綁定存取它們。
<code class="language-csharp">public ICommand DisplayPersonView { get { return new ActionCommand(action => ViewModel = new PersonViewModel(), canExecute => !IsViewModelOfType<PersonViewModel>()); } }</code>
這種方法提供了一種清晰簡潔的 MVVM 導航實現,無需依賴外部工具包。
以上是如何在WPF MVVM中實作簡單的視圖導覽?的詳細內容。更多資訊請關注PHP中文網其他相關文章!