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