Я пытаюсь использовать встраивание форм Xamarin для совместного использования XAML ContentPages между несколькими собственными проектами.Я добавил последние Nuget Xamarin.Forms для всех проектов, и все это прекрасно компилируется.Я получаю ошибку во время выполнения, которая говорит, что «элемент не относится к типу Xamarin.forms.view» при вызове CreateFragment.Кто-нибудь знает, что может быть не так?
Вот мой ContentPage, который находится в старомодной PCL (созданной до .NET Standard проектов):
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="commonClassLibrary.ContentPages.MainScreen">
<ContentPage.Content>
<ScrollView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout Padding="10">
<Label Text="Wowzers" TextColor="Black" FontAttributes="Bold" HorizontalOptions="FillAndExpand"/>
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>
Вот макет, которым является MainActivityиспользуя:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/container" />
</LinearLayout>
Здесь я пытаюсь поменять фрагмент, созданный из моей ContentPage:
if (!Xamarin.Forms.Forms.IsInitialized) {
// initialize Xamarin.Forms before we use it
Xamarin.Forms.Forms.Init(this, bundle);
}
// create the login page (Xamarin.Forms ContentPage)
var main = new MainScreen();
// get hold of the native Android fragment that represents the Xamarin.Forms page
var mainFragment = main.CreateFragment(this);
// show the login screen (native Xamarin.Android)
FragmentManager
.BeginTransaction()
.AddToBackStack(null)
.Replace(Resource.Id.container, mainFragment)
.Commit();