VS2017 версия 15.9.3, Xamarin Forms 3.4, Mvvmcross 6.2.2
В VS2017 с удовольствием создаем проекты для Android, Ios и UWP с общим проектом форм Xamarin.
IЯ заинтересован в использовании MVVMCross для поддержки MVVM и сокращения стандартного кода.
Веб-сайт MVVMCross дает руководство о том, как создать TipCalc UWP, но не TipCalc Xamarin.Forms.UWP, который разделяет код пользовательского интерфейса с Android и Ios.
Я подумал, что если бы я взял проект Tipcalc UWP, удалил представления и обратился к проектам Forms.UI и Forms.Core, он связался бы правильно, но, очевидно, нет.
Приложение.xaml
<local:TipCalcApp x:Class="MX_TipCalc.UWP.UWP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MX_TipCalc.Forms.UWP.UWP"
RequestedTheme="Light">
<Application.Resources>
<x:String x:Key="WelcomeText">Hello World!</x:String>
</Application.Resources>
</local:TipCalcApp>
App.xaml.cs
using MvvmCross.Platforms.Uap.Core;
using MvvmCross.Platforms.Uap.Views;
namespace MX_TipCalc.Forms.UWP.UWP
{
public sealed partial class App
{
public App()
{
InitializeComponent();
}
}
public abstract class TipCalcApp : MvxApplication<MvxWindowsSetup<Core.App>, Core.App>
{
}
}
Что нужно для того, чтобы проект MVVMCross Xamarin.Forms.UWP подключился к TipCalc.Forms.UI иTipCalc.Forms.Core, чтобы заставить его работать?
Спасибо
Итак, после ответа Нико Чжу - MSFT My App.xaml:
<local:TipCalcApp x:Class="MX_TipCalc.Forms.UWP.UWP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MX_TipCalc.Forms.UWP.UWP"
RequestedTheme="Light">
<Application.Resources>
<x:String x:Key="WelcomeText">Hello World!</x:String>
</Application.Resources>
</local:TipCalcApp>
My App.xaml.cs is
using MvvmCross.Forms.Platforms.Uap.Core;
using MvvmCross.Forms.Platforms.Uap.Views;
using MX_TipCalc.Forms.UI;
namespace MX_TipCalc.Forms.UWP.UWP
{
public sealed partial class App
{
public App()
{
InitializeComponent();
}
}
//public abstract class TipCalcApp :
MvxApplication<MvxWindowsSetup<Core.App>, Core.App>
//{
//}
public abstract class TipCalcApp : MvxWindowsApplication<MvxFormsWindowsSetup<Core.App, FormsApp>, Core.App, FormsApp, MainPage>
{
}
}
My MainPage.xaml is
<mvxf:MvxFormsWindowsPage
xmlns:mvxf="using:MvvmCross.Forms.Platforms.Uap.Views"
x:Class="MX_TipCalc.Forms.UWP.UWP.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MX_TipCalc.Forms.UWP.UWP"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
</Grid>
Мой MainPage.xaml.cs
using MvvmCross.Forms.Platforms.Uap.Views;
namespace MX_TipCalc.Forms.UWP.UWP
{
public partial class MainPage : MvxFormsWindowsPage
{
public MainPage()
{
InitializeComponent();
}
}
}
Хорошая новость - теперь он строится без проблем.
Плохая новость - он приходит с системойИсключение .AccessViolation: Попытка чтения или записи в защищенную память.Это часто указывает на то, что другая память повреждена. '
Я поставил точку останова в MX_TipCalc.Forms.UWP.UWP.App.xaml.cs
Public App () InitializeComponent
после этого он переходит к
static void Main(string[] args)
{
global::Windows.UI.Xaml.Application.Start((p) => new App());
}
, затем
/// <summary>
/// GetXamlType(String)
/// </summary>
public global::Windows.UI.Xaml.Markup.IXamlType GetXamlType(string fullName)
{
return _AppProvider.GetXamlType(fullName);
}
После нажатия на последнюю фигурную скобку при шаге происходит сбой.Это предел моих знаний: - (
Следующий шаг
Мой последний файл MainPage.xaml.cs теперь
namespace MX_TipCalc.Forms.UWP.UWP
{
public partial class MainPage
{
public MainPage()
{
InitializeComponent();
}
}
}
Сначала я получил сообщения об отсутствии файла"Interop.Manual.cs". Я несколько раз чистил и перестраивал решение / проекты. В конце концов это сообщение не появлялось. Я проверил, что TipCalc.UWP (не версия Forms) работает и что TipCalc.Forms.Droid работает. Да,они все еще работают, но когда я пытаюсь использовать TipCalc.Forms.UWP, он все равно вылетает в том же месте, что и раньше.