首先,一个小小的警告 - 我们在这里谈论Xamarin
,不幸的是,WPF
。我正在使用跨平台XAML
将现有的基于代码的页面转换为Xamarin Forms
表示。我有一个以下形式的课程:
public class ExtendedNavigationPage : BaseNavigationPage
{
public ExtendedNavigationPage(Xamarin.Forms.Page root)
:base(root)
{
}
}
所以现在我需要在XAML
内使用它。我最初的想法是,我可以传递构造函数的Page
参数:
<page:ExtendedNavigationPage>
<view:MyContentView/>
</page:ExtendedNavigationPage>
MyContentView
是Page
。
但是,我不能这样包装,Visual Studio告诉我没有无参数构造函数。现在我想知道是否甚至可以在XAML
内实例化我的自定义页面?
答案 0 :(得分:2)
首先,NavigationPage没有“View”属性。通常的做法是在其构造函数中包含一个Page,我猜这可能会导致您对无参数构造函数不存在的错误。
我还必须提到,在大多数情况下,在XAML中实例化NavigationPages是不必要的。既然我已经解决了这个问题,那么你可以这样做:
<?xml version="1.0" encoding="UTF-8" ?>
<NavigationPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="My.Shared.Page">
<x:Arguments>
<Page>
<ScrollView>
<StackLayout x:Name="layout" Orientation="Vertical" VerticalOptions="Start" HorizontalOptions="Center">
<ActivityIndicator x:Name="activity"></ActivityIndicator>
</StackLayout>
</ScrollView>
</Page>
</x:Arguments>
</NavigationPage>
这里的重要一行是第四行:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xaml 2009支持此行为。
有关此主题的更完整讨论,请参阅this forum post。 在此信用@Stephane Delcroix。