【问题标题】:Dynamically updated Xamarin.Forms ContentPage Content doesn't respond to user actions for iOS platform动态更新的 Xamarin.Forms ContentPage 内容不响应 iOS 平台的用户操作
【发布时间】:2020-07-14 19:46:57
【问题描述】:

在面向 iOSAndroid 平台的 Xamarin.Forms 项目中,我正在尝试更改 ContentContentPage动态如下方式,

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 设置回ContentPageContent 时,我可以与oldContent 元素进行交互。在同一个申请流程中。

((ContentPage)currentPage).Content = oldContent;

这允许我与 AndroidiOS 平台的 oldContent 子元素进行交互。

有没有人知道在动态更改 ContentPageContent 后,我如何使 oldContent 仍可与 iOS 平台交互.

【问题讨论】:

    标签: xamarin.forms xamarin.ios


    【解决方案1】:

    我只是设法实现它,

    我尝试将newContent 创建为空的Element。然后将ContentPageContent 替换为newContent。然后将相关的子元素添加到newContent 中,如下所示。

    var newContent = new Grid ();
    ((ContentPage)currentPage).Content = newContent;
    newContent.Children.Add(oldContent);
    newContent.Children.Add(testLabel);
    

    还有宾果游戏!!!成功了?

    【讨论】:

    • 感谢分享。不要忘记接受答案。
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2021-11-25
    • 2020-07-01
    相关资源
    最近更新 更多