Dar*_*ius 3 mvvmcross xamarin.forms
我使用 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)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
MainView.xaml.cs:
public partial class MainView : MvxContentPage<MainViewModel>
{
public MainView()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
它可以编译,但是当我启动应用程序时出现异常:
MvvmCross.Exceptions.MvxException:创建 View-ViewModel 查找表时出现问题 - 您为 ViewModel 注册了多个视图:2*MainViewModel (MainActivity,MainView)
如果您的 ViewModel 被称为 MainViewModel 而您的 Forms 页面也是如此,您可能会遇到名称冲突,因为 MvvmCross 将有 2 个视图到视图模型查找。你可以通过像“FormsActivity.cs”这样的不同命名你的活动来防止这种情况。
您也可以将 MainViewModel 重命名为 MvxMainViewModel(无论您喜欢什么),然后此异常就会消失。
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |