.NET MAUI 错误:“无法访问已处置的对象。对象名称:'Microsoft.Maui.Platform.ContentViewGroup'”

Miy*_*ang 2 c# xaml android maui

我目前正在使用 .NET MAUI 开发应用程序,但遇到了无法解决的问题。我在调试的时候,在android平台上导航页面时,遇到了一个奇怪的异常

\n

该应用程序有两个选项卡:主页和自助。登录后,用户将进入“主页”选项卡。但是,当我尝试从主页导航到任何其他页面时,应用程序会抛出以下错误并随后崩溃:

\n
\n

无法访问已处置的对象。\n对象名称: \xe2\x80\x98Microsoft.Maui.Platform.ContentViewGroup\'

\n
\n

这是我的 xaml 代码:

\n
<?xml version="1.0" encoding="utf-8" ?>\n<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"\n             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"\n             x:Class="Views.Dashboard.HomePageDashboard"\n             Title="HomePageDashboard">\n\n<Shell.TitleView>\n        <Grid>\n            <Grid.RowDefinitions>\n                <RowDefinition Height="*" />\n            </Grid.RowDefinitions>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width="9*" />\n                <ColumnDefinition Width="*" />\n            </Grid.ColumnDefinitions>\n            <Frame \n                           \n           Grid.Column="1"\n           HeightRequest="40"\n           WidthRequest="40"\n           CornerRadius="20"\n           BackgroundColor="Transparent"\n           HorizontalOptions="Center"\n           VerticalOptions="Center"\n           IsClippedToBounds="True"\n           Padding="0"\n           >\n                <Border BackgroundColor="{StaticResource PrimaryColorLight}">\n                    <Label Text="{Binding ProfileImageLabel}" TextColor="White" FontSize="Micro" LineBreakMode="WordWrap" HorizontalOptions="Center" VerticalOptions="Center"/>\n                    <Border.GestureRecognizers>\n                        <TapGestureRecognizer Command="{Binding GotoProfileCommand}"/>\n                    </Border.GestureRecognizers>\n                </Border>\n                </Frame>\n        </Grid>\n\n    </Shell.TitleView>\n <VerticalStackLayout Margin="0,30,0,0">\n                <Label Text="Categories" FontSize="Subtitle" FontAttributes="Bold" FontFamily="Bold" HorizontalOptions="Start" VerticalOptions="Start" TextColor="{AppThemeBinding Light={StaticResource Black},Dark={StaticResource Gray400}}"/>\n                <Frame CornerRadius="10" Margin="0,20,0,0">\n\n                    <ListView x:Name="listCategories" Margin="-20,-10,-20,-20"\n                          BackgroundColor="Transparent" RowHeight="60"\n                          SeparatorColor="Gray" SeparatorVisibility="Default"\n                          SelectedItem="{Binding ItemSelectedlv}"\n                          ItemSelected="OnItemSelected">\n\n                        <ListView.ItemTemplate>\n\n                            <DataTemplate>\n                                <ViewCell>\n                                    <StackLayout>\n                                        <Grid x:DataType="model:HomePageListInfo">\n                                            <Grid.ColumnDefinitions>\n                                                <ColumnDefinition Width="2*" />\n                                                <ColumnDefinition Width="7*" />\n                                                <ColumnDefinition Width="*" />\n                                            </Grid.ColumnDefinitions>\n                                            <Image Grid.Column="0" HorizontalOptions="Center" VerticalOptions="Center"\n                                           HeightRequest="50"\n                                           WidthRequest="50"\n                           Source="{Binding ImageResource}"\n                            />\n                                            <Label Grid.Column="1"\n                                           Style="{StaticResource CategoryListlabelStyle}"\n                                           FontSize="18"\n                           Text="{Binding ListViewItemDescription}"\n                           FontAttributes="Bold" />\n                                            <Image Grid.Column="2" HorizontalOptions="Center" VerticalOptions="Center">\n                                                <Image.Source>\n                                                    <FontImageSource\n                                    x:Name="fontimage"\n                                            FontFamily="AwesomeSolid"\n                                            Glyph="&#xf105;"\n                                            Size="20"\n                                            Color="{AppThemeBinding Light={StaticResource Black},Dark={StaticResource White}}"/>\n                                                </Image.Source>\n                                            </Image>\n                                        </Grid>\n                                    </StackLayout>\n                                </ViewCell>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                </Frame>\n            </VerticalStackLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

有趣的是,如果我导航到“自助”选项卡并尝试从那里导航到其他页面,则不会发生错误并且应用程序按预期运行。

\n

我尝试捕获并处理异常,但我仍然不确定问题的根本原因。我将非常感谢任何有关如何解决此问题的见解或建议。

\n

版本:VS2022 17.6\n我正在使用 .net 7

\n

Liy*_*SFT 5

我搜索了你提到的异常消息,在github上发现了类似的问题,关于由于后台操作中的入口元素导致MAUI应用程序错误

在某些情况下,该帧会导致异常System.ObjectDisposedException: 'Cannot access a disposed object.

所以你可以尝试在maui中使用边框而不是使用框架。

  • 请注意下一个发现此问题的人 - 该问题仍然存在于 .NET8 RC2 中。更改 &lt;Border&gt; 元素的所有 &lt;Frame&gt; 目前可以解决该问题。 (3认同)