首页 > 解决方案 > Xamarin.Forms 预览屏幕不工作

问题描述

在我的 Xamarin.Forms 项目中,我编辑 .xaml 文件后,预览屏幕停止响应。它给出了 java.lang.NullPointerException 错误,但在 Visual Studio 2019 的错误部分中没有显示任何错误。我的最终 .xaml 文件如下:

<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:map="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
             mc:Ignorable="d"
             x:Class="x.MainPage">

    <Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
        <Grid.RowDefinitions>
            <RowDefinition Height="2.1*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="1" HeightRequest="160" ColumnSpacing="0" Margin="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.1*"/>
            </Grid.ColumnDefinitions>
            <Grid BackgroundColor="White">
                <StackLayout VerticalOptions="FillAndExpand" Orientation="Vertical">
                    <Label  Text="x" TextColor="DimGray" FontSize="35" Margin="5"/>
                    <SearchBar Text="x" VerticalTextAlignment="Center" VerticalOptions="Fill" HorizontalTextAlignment="Start" IsEnabled="False" IsReadOnly="True" HorizontalOptions="Fill" Margin="5"/>
                    <Label Text="x" FontSize="Large" Margin="5" VerticalOptions="Center" HorizontalOptions="Center"/>
                    <Grid Grid.Row="1" HeightRequest="160" ColumnSpacing="0" Margin="0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Image Source="https://cdn1.iconfinder.com/data/icons/general-9/500/add-512.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="0.5" Grid.Column="0" />
                        <Image Source="https://cdn1.iconfinder.com/data/icons/general-9/500/add-512.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="0.5" Grid.Column="1" />
                        <Image Source="https://cdn1.iconfinder.com/data/icons/general-9/500/add-512.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="0.5" Grid.Column="2" />
                        <Image Source="https://cdn1.iconfinder.com/data/icons/general-9/500/add-512.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="0.5" Grid.Column="3" />
                        <Image Source="https://cdn1.iconfinder.com/data/icons/general-9/500/add-512.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="0.5" Grid.Column="4" />
                    </Grid>
                    <Label  Text="x" FontSize="Caption" Margin="5" TextColor="#000AFF" VerticalTextAlignment="Center" VerticalOptions="Center" HorizontalOptions="Center" HorizontalTextAlignment="Center"/>
                </StackLayout>
            </Grid>
        </Grid>
        <Grid>
            <map:Map x:Name="Map" MapType="Street" HasZoomEnabled="True"/>
        </Grid>
    </Grid>

</ContentPage>

标签: javac#xamlxamarin.formsvisual-studio-2019

解决方案


欢迎来到 SO!

检查代码后,有一个属性SearchBar会导致这个错误。

修改IsEnabled="False"IsEnabled="True",或者如果不想SearchBar显示可以设置IsVisible="False"

效果如下:

在此处输入图像描述

此外,您在第一个 Grid 中只定义了一行,但使用设置了第二个:

<Grid Grid.Row="1" HeightRequest="160" ColumnSpacing="0" Margin="0">

如果改为:

<Grid Grid.Row="0" HeightRequest="160" ColumnSpacing="0" Margin="0">

预览屏幕将显示如下:

在此处输入图像描述

同样的错误设置在第四个Grid,你可以检查一下。


推荐阅读