Пользовательский интерфейс не будет загружаться до нажатия

Недавно я впервые запустил свое приложение Xamarin на iOS. Приложение отлично работает на Android. Однако на iOS пользовательский интерфейс не загрузится полностью, пока я не коснусь экрана. Это связано с элементами привязки и пользовательского интерфейса, которые создаются динамически. Например, эта кнопка:

<local:MainMenuButton Command = "{Binding NavigateCommand}" CommandParameter = "{Type local:page2}" CornerRadiusExtended = "{Binding LeftCornersRounded}" Grid.Row = "0" Grid.Column = "0" HeightRequest = "{Binding Width, Source = {x:Reference ModelButton}}"/>

не изменит его высоту на высоту ModelButton. Кроме того, ImageButton полностью невидимы (изображение не загружается). Все начинает работать после нажатия на экран. Кто-нибудь знает, что происходит?

[EDIT]: это относится даже к элементам управления, на которые я не ссылаюсь в коде. Например:

<ImageButton Style = "{StaticResource UiButton}" Grid.Row = "0" Grid.Column = "0" Command = "{Binding SetLanguageCommand}" CommandParameter = "EN" Source = "{helpers:ImageResourceExtension imagesource.png}"/>

// Extension code

[ContentProperty("Source")]
public class ImageResourceExtension : IMarkupExtension
{
    public string Source { get; set; }

    public object ProvideValue(IServiceProvider serviceProvider)
    {
        if (Source == null)
            return null;

        var imageSource = ImageSource.FromResource(Source);

        return imageSource;
    }
}

ImageButton не загрузит свой источник до щелчка. Если убрать привязку и напрямую вводить исходники, то все нормально работает. Я использовал отладчик, чтобы проверить, выполняется ли код расширения при запуске страницы или после клика, и оказалось, что он выполняется при запуске. Однако по какой-то причине изображение все еще отображается после нажатия.

Привет, попробуйте обновить данные модели в методе OnAppearing().

Junior Jiang 04.07.2019 08:01

@JuniorJiang-MSFT К сожалению, это не работает.

gogolon 04.07.2019 10:59

Хорошо, не могли бы вы показать код обновления данных модели при запуске приложения в ContentPage .

Junior Jiang 04.07.2019 11:05

@JuniorJiang-MSFT Я отредактировал свой пост. Проблема применима даже к элементам управления, на которые я не ссылаюсь в коде, поэтому, вероятно, дело не в обновлении данных модели.

gogolon 04.07.2019 12:58

Понятно, попробуйте установить режим привязки на TwoWay . HeightRequest = "{Binding Width, Source = {x:Reference ModelButton},Mode=TwoWay}"

Junior Jiang 05.07.2019 03:20

@JuniorJiang-MSFT Мне не помогло. Я попытался создать новый проект и скопировать туда все файлы, но это тоже не помогло, поэтому я отправил запрос в службу поддержки, используя страницу поддержки MS.

gogolon 05.07.2019 12:48

Не могли бы вы поделиться своим решением на Github. Или новое решение, позволяющее воспроизвести то, что вы видите. Ваша ошибка кажется очень странной

Saamer 06.07.2019 00:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил ответ от службы поддержки Microsoft. Они нашли корень проблемы. Это был пакет NuGet под названием Forms9Patch, который вызвал проблему (https://baskren.github.io/Forms9Patch/). Непонятно, как это могло повлиять на рендеринг, но удаление пакета из проекта решило проблему. Я свяжусь с владельцем пакета с этим.

Другие вопросы по теме