我试图在我的xamarin应用中定义可重用的组件。我的目的是在多个文件中使用相同的xaml。例如,我需要为我的应用程序定义公共标题。我尝试按以下方式实现:在单独的文件中定义所需的xaml。使用与在任何其他xaml中重用相关联的类名。
可重复使用的xaml:
<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AppHeader" BackgroundColor="White"
Spacing="1"
VerticalOptions="Start">
<StackLayout Padding="0,10,0,10"
BackgroundColor="Blue"
Orientation="Horizontal"
Spacing="0">
<Label
Text="AppName"
HorizontalTextAlignment="Center"
HorizontalOptions="Center"
TextColor="White"
></Label>
</StackLayout>
</StackLayout>
相关课程:
public partial class AppHeader : StackLayout
{
public AppHeader ()
{
InitializeComponent();
}
}
xaml中的用法
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:common="clr-namespace:MyApp;assembly=MyApp"
x:Class="MyApp.SampleView">
<StackLayout>
<common:AppHeader></common:AppHeader>
</StackLayout>
</ContentPage>
在运行应用程序时,我收到了可重复使用的xaml文件的错误信息:
&#34;名称&#39; InitializeComponent&#39;在当前上下文中不存在&#34;
实现看起来很简单,但我无法确定缺少的内容。 对此有何解决方案? 任何帮助将非常感激。 感谢
答案 0 :(得分:1)
在StackLayout
中,您的班级属性为x:Class="AppHeader"
。这应该指定包括命名空间的完全限定类名。所以编辑它就像:
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="YouNameSpace.AppHeader" BackgroundColor="White"
Spacing="1"
VerticalOptions="Start">
<StackLayout Padding="0,10,0,10" ...
答案 1 :(得分:0)
从InitializeComponent();
构造函数中删除AppHeader
。 InitializeComponent()
仅由ContentPage
s使用。
另外,只是注意到AppHeader
XAML中的XML。将XAML更改为此(删除ContentPage
中仅需要的所有样板XAML:
<StackLayout BackgroundColor="White"
Spacing="1"
VerticalOptions="Start">
<StackLayout Padding="0,10,0,10"
BackgroundColor="Blue"
Orientation="Horizontal"
Spacing="0">
<Label Text="AppName"
HorizontalTextAlignment="Center"
HorizontalOptions="Center"
TextColor="White"></Label>
</StackLayout>
</StackLayout>