VS2017 версии 15.9.3, Xamarin Forms 3.4, Mvvmcross 6.2.2
В VS2017 можно создавать проекты Android, Ios и UWP с помощью общего проекта форм Xamarin.
Я заинтересован в использовании MVVMCross для поддержки MVVM и сокращения шаблонного кода.
На веб-сайте MVVMCross есть руководство по созданию UWP TipCalc, но не Xamarin.Forms.UWP TipCalc, который использует код пользовательского интерфейса совместно с Android и iOS.
Я думал, что если я возьму проект UWP Tipcalc, удалю представления и сделаю ссылку на проекты Forms.UI и Forms.Core, он будет правильно соединен, но, очевидно, нет.
App.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>
Мой App.xaml.cs - это
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>
{
}
}
Мой MainPage.xaml - это
<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>
My MainPage.xaml.cs is
using MvvmCross.Forms.Platforms.Uap.Views;
namespace MX_TipCalc.Forms.UWP.UWP
{
public partial class MainPage : MvxFormsWindowsPage
{
public MainPage()
{
InitializeComponent();
}
}
}
Хорошая новость - теперь он собирается без проблем.
Плохая новость - возникает исключение System.AccessViolation: попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена ».
Ставлю точку останова в MX_TipCalc.Forms.UWP.UWP.App.xaml.cs
Публичное приложение () 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 (версия без форм) работает и TipCalc.Forms.Droid работает. Да, они все еще работают, но когда я пробую TipCalc.Forms.UWP, он все еще вылетает в том же месте, что и раньше.
: MvxFormsWindowsPage
родительский класс изMainPage
. - person Nico Zhu - MSFT   schedule 19.12.2018