問題
有些時候,為了方便起見,想直接使用 Code Behind 程式碼,直接來處理一些事情;此時,若想要在 Code Behind 中,存取 ViewModel 中的屬性,或者呼叫 ViewModel 內的方法,該如何處理呢?
解答
在這裡,我們假設這個頁面名稱為 MainPage,而該頁面的 ViewModel 為 MainPageViewModel
您可以使用底下方式取得這個頁面的 ViewModel 物件;在這裡,我們宣告一個欄位型別為 MainPageViewModel 的 fooMainPageViewModel 物件,在建構式中,取得該頁面的
BindingContext
物件,並且轉型成為 MainPageViewModel。
而頁面的
BindingContext
是透過了這個 XAML 宣告 prism:ViewModelLocator.AutowireViewModel="True"
,由 Prism 自動將 ViewModel 物件產生,並且設定到頁面的 BindingContext 屬性上。 public partial class MainPage : ContentPage
{
MainPageViewModel fooMainPageViewModel;
public MainPage()
{
InitializeComponent();
fooMainPageViewModel = this.BindingContext as MainPageViewModel;
}
}