【问题标题】:Why is Flyout detail not populating on android in MAUI, works on Windows为什么在 MAUI 中的 android 上没有填充 Flyout 详细信息,适用于 Windows
【发布时间】:2022-09-23 10:36:17
【问题描述】:

我有一个 MAUI 应用程序,代码如下。适用于平板电脑和台式机。在 Windows 上,它按预期工作,当您单击弹出菜单中的某个项目时,会填充详细内容。但是,在 Android 上,什么也没有发生。我可以单步执行代码并查看它是否正在执行。但什么都没有显示。我已经搜索了文档,但找不到任何东西可以解释这种行为。任何人都可以帮忙吗?

我正在从 Xamarin 转换一个应用程序,就像拔牙一样:(

以下是该问题的一些视频剪辑。在 Xamarin 中,这是一个主明细页面所以略有不同的技术。

Android Windows

主页

<ScrollView>
    <CollectionView x:Name=\"collectionView\"
                    x:FieldModifier=\"public\"
                    SelectionMode=\"Single\"
                    SelectionChanged=\"collectionView_SelectionChanged\"
                    Background=\"White\">

        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Grid Padding=\"5,10\">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width=\"30\"/>
                        <ColumnDefinition Width=\"*\" />
                    </Grid.ColumnDefinitions>
                    <Image Grid.Column=\"0\" Source=\"{Binding IconSource}\" BackgroundColor=\"Transparent\" />
                    <StackLayout Orientation=\"Horizontal\" Grid.Column=\"1\" BackgroundColor=\"Transparent\">
                        <Label Grid.Column=\"0\" Grid.Row=\"0\"
                               Margin=\"10,0\"
                               Text=\"{Binding Title}\"
                               FontSize=\"20\"
                               FontAttributes=\"Bold\"
                               VerticalOptions=\"Center\"/>
                        <Image Grid.Column=\"0\" Grid.Row=\"0\" Source=\"checkw.png\" HorizontalOptions=\"End\" VerticalOptions=\"Start\" HeightRequest=\"16\"></Image>
                    </StackLayout>
                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
    
</ScrollView>

代码背后

private void collectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var item = e.CurrentSelection.FirstOrDefault() as FlyoutPageItem;
    if (item != null)
    {
        FlyoutPage page = (FlyoutPage)this.Parent;

        page.Detail = new NavigationPage(new Pages.Claim.Actions());// new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
        page.Title = item.Title;
        //page.IsPresented = false;
    }
}

protected override void OnNavigatedTo(NavigatedToEventArgs args)
{
    base.OnNavigatedTo(args);

    List<FlyoutPageItem> pages = new()
    {
        new FlyoutPageItem {Title = \"Actions\", TargetType = typeof(Pages.Claim.Actions), IconSource = \"actionact.png\" },
        new FlyoutPageItem {Title = \"Agreement\", TargetType = typeof(Pages.Claim.Agreement), IconSource = \"actionagr.png\" },
        new FlyoutPageItem {Title = \"Asbestos\", TargetType = typeof(Pages.Claim.Asbestos), IconSource = \"actionasb.png\" },
        new FlyoutPageItem {Title = \"Buildings\", TargetType = typeof(Pages.Claim.Buildings), IconSource = \"actionbld.png\" },


    };

    collectionView.ItemsSource = pages;
}
  • 您是说 Shell Flyout 最初不会在 Android 的列表中显示所有 Shell Content 项吗?我可以确认您是否关闭弹出窗口并再次重新打开它,您会看到正确的显示吗?
  • 不,这不是壳牌。弹出部分工作得很好。我可以看到列表确定并单击项目。它只是详细部分没有在 Android 上填充,而在 Windows 上。我看看能不能加一些视频片段

标签: .net-maui


【解决方案1】:

是的,我可以在我这边复制您的问题。因为这是一个潜在问题,可以在此线程上进行跟踪:https://github.com/dotnet/maui/issues/10274

感谢您的耐心和反馈!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2013-04-09
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多