从.NET MAUI 6迁移到.NET MAUI 7时,我是否需要重写所有的XAML?

thigvfpy  于 2023-04-18  发布在  .NET
关注(0)|答案(1)|浏览(337)

我一直在写一个应用程序在.NET MAUI 6一段时间。由于需要一些资源有关Map控件我更新到.NET MAUI 7。
以下是在.NET MAUI 6中运行时的页面:

以下是运行.NET MAUI 7时的相同XAML:

正如您所看到的,控件的呈现方式有很大的不同。
这是两个页面的XAML(相同):

<ContentPage
x:Class="Xen.Presentation.App.MainPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
Shell.FlyoutBehavior="Disabled"
Shell.NavBarIsVisible="False">

<ScrollView>
    <RefreshView
        Command="{Binding RefreshCommand}"
        IsRefreshing="{Binding IsRefreshing}"
        VerticalOptions="FillAndExpand">
        <StackLayout>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <Image
                    Grid.Row="0"
                    Grid.RowSpan="5"
                    Grid.ColumnSpan="3"
                    Aspect="AspectFit"
                    Source="background_image.jpg" />

                <StackLayout
                    Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="5"
                    Margin="0,25,0,0"
                    Orientation="Horizontal"
                    VerticalOptions="Center">
                    <Frame
                        BackgroundColor="Transparent"
                        CornerRadius="20"
                        HeightRequest="40"
                        HorizontalOptions="CenterAndExpand"
                        VerticalOptions="Center"
                        WidthRequest="40">
                        <Image
                            Aspect="AspectFit"
                            HeightRequest="40"
                            Source="heartfullicon.png"
                            WidthRequest="40" />
                    </Frame>

                    <Frame
                        Padding="0"
                        BackgroundColor="White"
                        CornerRadius="100"
                        HeightRequest="150"
                        HorizontalOptions="Center"
                        VerticalOptions="Start"
                        WidthRequest="150">
                        <Image
                            Aspect="AspectFill"
                            HeightRequest="150"
                            Source="cloudprofile.jpg"
                            WidthRequest="150" />
                    </Frame>

                    <Frame
                        BackgroundColor="White"
                        CornerRadius="20"
                        HeightRequest="40"
                        HorizontalOptions="CenterAndExpand"
                        VerticalOptions="Center"
                        WidthRequest="40">
                        <Image
                            Aspect="AspectFit"
                            BackgroundColor="Black"
                            HeightRequest="40"
                            Source="heartfullicon.png"
                            WidthRequest="40" />
                    </Frame>
                </StackLayout>

                <Label
                    Grid.Row="1"
                    Grid.Column="0"
                    Grid.ColumnSpan="3"
                    FontAttributes="Bold"
                    FontSize="Title"
                    HorizontalOptions="Center"
                    Text="Emily Watson"
                    TextColor="White"
                    VerticalOptions="Center" />

                <Label
                    Grid.Row="2"
                    Grid.Column="0"
                    Grid.ColumnSpan="5"
                    FontSize="Body"
                    HorizontalOptions="Center"
                    Text="Statistical Analysis and Data Reconfiguration"
                    TextColor="White"
                    VerticalOptions="Center" />

                <Label
                    Grid.Row="3"
                    Grid.Column="0"
                    Grid.ColumnSpan="5"
                    Margin="15,0,15,0"
                    FontSize="Small"
                    HorizontalOptions="Center"
                    HorizontalTextAlignment="Center"
                    LineBreakMode="WordWrap"
                    MaxLines="3"
                    Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sapien justo, mattis a laoreet nec, dictum non tortor. Vestibulum varius aliquam accumsan."
                    TextColor="LightGray"
                    VerticalOptions="Center"
                    VerticalTextAlignment="Center" />

                <Frame
                    Grid.Row="4"
                    Grid.Column="0"
                    Grid.ColumnSpan="5"
                    Padding="5"
                    BackgroundColor="Blue"
                    CornerRadius="20"
                    HorizontalOptions="Center"
                    VerticalOptions="Center">
                    <Label
                        Margin="10,0,10,0"
                        HorizontalOptions="Center"
                        Text="Available"
                        TextColor="White"
                        VerticalOptions="Center" />
                </Frame>
            </Grid>

            <Button
                Margin="20,20,20,20"
                BackgroundColor="White"
                BorderColor="Blue"
                BorderWidth="1"
                Command="{Binding AddReviewCommand}"
                FontFamily="SFProTextRegular"
                HorizontalOptions="FillAndExpand"
                Text="Add Review"
                TextColor="Black" />
        </StackLayout>
    </RefreshView>
</ScrollView>

以下是运行.NET MAUI 6时CSPROJ中的目标框架:

<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>

以下是运行.NET MAUI 7时CSPROJ中的目标框架:

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>

这只是一个示例,还有更多的页面有问题,我必须从头开始重写它们。这是正常的还是我做错了什么?

xienkqul

xienkqul1#

简短的回答是:不,你不应该在不同版本之间重写你的UI。
更长的答案:然而,在不同的版本之间,特别是在主要版本之间,bug会被修复,或者可能会引入新的功能,但这看起来更像是一些bug修复。
如果你一直在使用.NET 6并使你的UI变得完美,你可能已经(无意识地)解决了一些bug。同时,团队一直在研究.NET 7,修复这些bug,当你更新的时候,突然之间解决方法不再起作用,并且可能会显示出行为上的差异。
这当然不是理想的,随着时间的推移,事情稳定下来,这种情况应该会越来越少。
对于您的特定情况,我看到一个Frame和一个BackgroundColor="White",这可能是什么。
此外,您现在可能需要考虑使用Border,而不是Frame,它是精神继承者并提供更多功能。
希望这能回答你的问题!

相关问题