簡體   English   中英

創建View-ViewModel查找表時出現問題-您為ViewModels注冊了多個視圖

[英]Problem seen creating View-ViewModel lookup table - you have more than one View registered for the ViewModels

我使用MvvmCross啟動了Xamarin.Froms項目。 我遵循MvvmCross官方網站上的文檔,使用Xamarin.Forms啟動Android項目。 這是我的Core項目中的代碼:

public class App : MvxApplication
{
    public App()
    {

    }

    public override void Initialize()
    {
        base.Initialize();

        Mvx.IoCProvider.RegisterSingleton(new NavigationStack());
        Mvx.IoCProvider.RegisterSingleton<IMvxAppStart>(new MvxAppStart<MainViewModel>(this, Mvx.IoCProvider.Resolve<IMvxNavigationService>()));
    }
}

public class MainViewModel : BaseViewModel
{
    public MainViewModel(NavigationStack navigationStack) : base(navigationStack)
    {
    }
}

我的Forms項目中的代碼: MainView.xaml

<views:MvxContentPage x:TypeArguments="viewModels:MainViewModel"
xmlns="http://xamarin.com/schemas/2014/forms" 
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
xmlns:views="clr-namespace:MvvmCross.Forms.Views;assembly=MvvmCross.Forms"
xmlns:mvx="clr-namespace:MvvmCross.Forms.Bindings;assembly=MvvmCross.Forms"
xmlns:viewModels="clr-namespace:MyApp.Core.ViewModels;assembly=MyApp.Core"
x:Class="MyApp.Forms.Views.MainView">

    <ContentPage.Content>
        <StackLayout Margin="10">
            <Label Text="Subtotal" />
        </StackLayout>
    </ContentPage.Content>

</views:MvxContentPage>

MainView.xaml.cs

public partial class MainView : MvxContentPage<MainViewModel>
{
    public MainView()
    {
        InitializeComponent();
    }
}

在我的Android項目中:

[Activity(
    Label = "MyApp.Droid",
    Theme = "@style/MyTheme",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
    LaunchMode = LaunchMode.SingleTask)]
public class MainActivity : MvxFormsAppCompatActivity<MvxFormsAndroidSetup<Core.App, Forms.App>, Core.App, Forms.App>
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        base.OnCreate(bundle);
    }
}

它可以編譯,但是當我啟動應用程序時出現異常:

MvvmCross.Exceptions.MvxException:創建View-ViewModel查找表時出現問題-您為ViewModels注冊了多個視圖:2 * MainViewModel(MainActivity,MainView)

如果您的ViewModel稱為MainViewModel,而Forms頁面也是如此,則可能會發生名稱沖突,因為MvvmCross將具有2個視圖來進行ViewModel查找。 您可以通過將您的活動命名為“ FormsActivity.cs”來避免這種情況。

您也可以將MainViewModel重命名為MvxMainViewModel(無論您喜歡什么),然后該異常將消失。

暫無
暫無

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

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