В моем проекте Xamarin.Forms , ориентированном на обе платформы iOS и Android, я пытаюсь изменить Content
из a 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;
Это приведет к успешному отображению testLabel
поверх oldContent
.
In Android платформа, я все еще могу взаимодействовать с дочерними элементами (Buttons, ListView ... et c) в представлении oldContent
. Но в iOS дочерние элементы oldContent
view на данном этапе не интерактивны.
Я также убедился, что 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
обратно как Content
из ContentPage
, тогда я может взаимодействовать с элементами oldContent
. В том же потоке приложения.
((ContentPage)currentPage).Content = oldContent;
Это позволяет мне взаимодействовать с oldContent
дочерними элементами для Android и iOS платформ.
Кто-нибудь знает, как я могу сделать oldContent
по-прежнему интерактивным для iOS платформы после динамического изменения Content ContentPage .