2017-04-09 80 views
0

我已經從MVVMcross框架下載了一個示例,其中可以找到here。當我構建UWP項目時,它編譯並運行時沒有任何錯誤。這個變量來自哪裏? MVVMcross UWP框架示例

現在我正試圖重拍UWP項目,並且我遇到了一個問題,它位於以下文件中:XPlatformMenus/XPlatformMenus.UWP/Views/Home/HomeView.xaml.cs

在第11行和第12行,該類正在調用base.Viewmodel的返回值。 問題:此屬性來自哪裏?

我的思維過程:

從我的理解應用程序試圖返回一個名爲HomeViewModel類的視圖模型屬性。

但是,當您檢查HomeViewModel類:XPlatformMenus/XPlatformMenus.Core/ViewModels/Home/HomeViewModel.cs(位於不同的項目中,引用時)沒有屬性ViewModel。

那麼HomeViewModel繼承自BaseViewModel:XPlatformMenus/XPlatformMenus.Core/ViewModels/Base/BaseViewModel.cs,但沒有一個名爲ViewModel的屬性。 BaseViewModel繼承自MvxViewModel,所以這就是它必須來自的地方!哦,不,我認爲與Visual Studio的MvxViewModel類我收到相關的元數據:

namespace MvvmCross.Core.ViewModels { 

    public abstract class MvxViewModel : MvxNavigatingObject, IMvxViewModel 
    { 
     protected MvxViewModel(); 

     public MvxRequestedBy RequestedBy { get; set; } 

     public void Init(IMvxBundle parameters); 
     public void ReloadState(IMvxBundle state); 
     public void SaveState(IMvxBundle state); 
     public virtual void Start(); 
     protected virtual void InitFromBundle(IMvxBundle parameters); 
     protected virtual void ReloadFromBundle(IMvxBundle state); 
     protected virtual void SaveStateToBundle(IMvxBundle bundle); 
    } 
} 

這既不是有一個ViewModel財產......當我用「轉到定義」功能,在Visual Studio中的視圖模型屬性她把我帶到MvxWindowsPage:

using MvvmCross.Core.ViewModels; 
using MvvmCross.Core.Views; 
using MvvmCross.Platform.Core; 
using MvvmCross.WindowsUWP.Views.Suspension; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Navigation; 

namespace MvvmCross.WindowsUWP.Views 
{ 
    public class MvxWindowsPage : Page, IMvxWindowsView, IMvxView, IMvxDataConsumer 
    { 
     public MvxWindowsPage(); 

     public IMvxWindowsFrame WrappedFrame { get; } 
     public IMvxViewModel ViewModel { get; set; } 
     protected IMvxSuspensionManager SuspensionManager { get; } 

     public void ClearBackStack(); 
     protected virtual IMvxBundle LoadStateBundle(NavigationEventArgs e); 
     protected override void OnNavigatedFrom(NavigationEventArgs e); 
     protected override void OnNavigatedTo(NavigationEventArgs e); 
     protected virtual void SaveStateBundle(NavigationEventArgs navigationEventArgs, IMvxBundle bundle); 
    } 
} 

其中,確實有一個屬性ViewModel。但我沒有得到HomeView如何知道這個類,因爲我沒有看到它在繼承路徑中設置的位置。

+0

嗨入佛門,感謝你回答。我首先包含了一個錯誤的鏈接(對於WPF項目而不是UWP)。你介意再看看它:-) –

+1

讓你看看HomeView.xaml文件。你會看到它來自BaseView –

回答

2

base.ViewModel指代從BaseView派生的類HomeView(在其中使用它)。

在HomeView.xaml:

<local:BaseView 
x:Class="XPlatformMenus.UWP.Views.HomeView" 
+0

感謝您的答案。我在哪裏可以看到它被設置爲從BasePage派生的視圖? –

+0

@ Salvatore'Lucky'Luciano舊的鏈接類是從BasePage派生的。改變問題有時會使答案失效。 –

+0

它來自BaseView。考慮HomeView.xaml – dvorn