如何修复Xamarin.Forms XAML中的Content属性错误
修复Xamarin.Forms中Contact.xaml的"未找到Content属性"错误
错误原因
你的Contact.xaml文件存在XAML语法结构错误:NavigationPage.HasNavigationBar="False"被错误地放在ContentPage起始标签外部,当作独立标签处理,导致XAML解析器无法正确识别ContentPage的结构,进而找不到Content属性。
修复步骤
- 将
NavigationPage.HasNavigationBar="False"作为ContentPage的附加属性,移到ContentPage起始标签内部 - 修正ContentPage起始标签的闭合错误(原代码中多了一个多余的
>)
修复后的完整代码
<?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:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:viewcontents="clr-namespace:ProjectFrameworkMob.ViewContents" mc:Ignorable="d" x:Class="ProjectFrameworkMob.Views.Contact" NavigationPage.HasNavigationBar="False"> <ContentPage.Content> <StackLayout> <viewcontents:MainHeaderControl x:Name="HeaderControl" IsVisible="true"></viewcontents:MainHeaderControl> <Frame CornerRadius="10" HasShadow="True" VerticalOptions="Start" > <StackLayout> <Label Text="Contact Page" FontSize="30" VerticalOptions="Fill" HorizontalOptions="Start" FontAttributes="Bold" FontFamily="Roboto" x:Name="lblHeading" ></Label> <Frame Padding="10,5" HasShadow="True" CornerRadius="5" BorderColor="DeepSkyBlue" Margin="0,10,0,0"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="40"> </RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"> </ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="40"> </ColumnDefinition> </Grid.ColumnDefinitions> <Image Source="Person.png" Scale="0.6" ></Image> <Entry Grid.Column="1" x:Name="lblAppName" HorizontalOptions="FillAndExpand" VerticalOptions="Center" Placeholder="Enter Address" FontSize="Small" TextColor="Black"> </Entry> </Grid> </Frame> <Frame Padding="10,5" HasShadow="True" CornerRadius="5" BorderColor="DeepSkyBlue" Margin="0,10,0,0"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="40"> </RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"> </ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="40"> </ColumnDefinition> </Grid.ColumnDefinitions> <Entry Grid.Column="1" x:Name="lblMainTitle" HorizontalOptions="FillAndExpand" VerticalOptions="Center" Placeholder="Enter Website URL" FontSize="Small" TextColor="Black"> </Entry> </Grid> </Frame> <Frame Padding="10,5" HasShadow="True" CornerRadius="5" BorderColor="DeepSkyBlue" Margin="0,10,0,0"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="60"> </RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"> </ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="40"> </ColumnDefinition> </Grid.ColumnDefinitions> <Editor Grid.Column="1" x:Name="lblMainDesc" Placeholder="Enter Phone Number" FontSize="Small" TextColor="Black"> </Editor> </Grid> </Frame> <Button BackgroundColor="Green" Text="Get Contact Details" VerticalOptions="EndAndExpand" CornerRadius="5" Margin="0,15,0,0" Clicked="GetSettings_Clicked"></Button> <Button BackgroundColor="CornflowerBlue" Text="Update Contact Details" VerticalOptions="EndAndExpand" CornerRadius="5" Margin="0,15,0,0" Clicked="UpdateSettings_Clicked"></Button> <Label Text="Status" TextColor="Brown" FontSize="Medium" x:Name="lblStatus" HorizontalOptions="Center"></Label> </StackLayout> </Frame > <Frame CornerRadius="5" Margin="0,0,0,10"> <StackLayout> <Button BackgroundColor="Red" Text="Logout" CornerRadius="5" Clicked="Logout_Clicked" ></Button> </StackLayout> </Frame> </StackLayout> </ContentPage.Content> </ContentPage>
关键说明
Xamarin.Forms的XAML解析器要求附加属性(如NavigationPage.HasNavigationBar)必须声明在目标元素的起始标签内部,不能作为独立标签存在。原代码错误的标签结构打乱了解析逻辑,导致解析器无法识别ContentPage的Content属性,从而抛出错误。
内容的提问来源于stack exchange,提问作者Samir kumar
相关产品推荐
相关产品推荐

