2017-04-09 36 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