【发布时间】:2020-07-14 19:46:57
【问题描述】:
在面向 iOS 和 Android 平台的 Xamarin.Forms 项目中,我正在尝试更改 Content 的ContentPage动态如下方式,
var currentPage = Application.Current.MainPage.Navigation.NavigationStack.LastOrDefault();
var oldContent = ((ContentPage)currentPage).Content;
var testLabel = new Label { Text = "Hello" };
var newContent = new Grid { Children = {oldContent, testLabel } };
((ContentPage)currentPage).Content = newContent;
这将成功地在oldContent 上显示testLabel。
在 Android 平台中,我仍然可以与 oldContent 视图中的子元素(按钮、ListView...等)进行交互。但在 iOS 中,oldContent 视图子元素在此阶段不是交互式的。
我还确保testLabel 不会阻止oldContent。这就是我确保它不会阻塞的方式,
var currentPage = Application.Current.MainPage.Navigation.NavigationStack.LastOrDefault();
var oldContent = ((ContentPage)currentPage).Content;
var newContent = new Grid { Children = { oldContent } };
((ContentPage)currentPage).Content = newContent;
对于这个设置也是如此,它仅适用于 Android 平台,我可以与oldContent 子元素进行交互。但是对于 iOS 平台,我无法与 oldContent 子元素交互。
此外,当我将oldContent 设置回ContentPage 的Content 时,我可以与oldContent 元素进行交互。在同一个申请流程中。
((ContentPage)currentPage).Content = oldContent;
这允许我与 Android 和 iOS 平台的 oldContent 子元素进行交互。
有没有人知道在动态更改 ContentPage 的 Content 后,我如何使 oldContent 仍可与 iOS 平台交互.
【问题讨论】: