【发布时间】:2022-09-23 10:36:17
【问题描述】:
我有一个 MAUI 应用程序,代码如下。适用于平板电脑和台式机。在 Windows 上,它按预期工作,当您单击弹出菜单中的某个项目时,会填充详细内容。但是,在 Android 上,什么也没有发生。我可以单步执行代码并查看它是否正在执行。但什么都没有显示。我已经搜索了文档,但找不到任何东西可以解释这种行为。任何人都可以帮忙吗?
我正在从 Xamarin 转换一个应用程序,就像拔牙一样:(
以下是该问题的一些视频剪辑。在 Xamarin 中,这是一个主明细页面所以略有不同的技术。
主页
<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