Недавно я впервые запустил свое приложение 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 не загрузит свой источник до щелчка. Если убрать привязку и напрямую вводить исходники, то все нормально работает. Я использовал отладчик, чтобы проверить, выполняется ли код расширения при запуске страницы или после клика, и оказалось, что он выполняется при запуске. Однако по какой-то причине изображение все еще отображается после нажатия.
@JuniorJiang-MSFT К сожалению, это не работает.
Хорошо, не могли бы вы показать код обновления данных модели при запуске приложения в ContentPage .
@JuniorJiang-MSFT Я отредактировал свой пост. Проблема применима даже к элементам управления, на которые я не ссылаюсь в коде, поэтому, вероятно, дело не в обновлении данных модели.
Понятно, попробуйте установить режим привязки на TwoWay . HeightRequest = "{Binding Width, Source = {x:Reference ModelButton},Mode=TwoWay}"
@JuniorJiang-MSFT Мне не помогло. Я попытался создать новый проект и скопировать туда все файлы, но это тоже не помогло, поэтому я отправил запрос в службу поддержки, используя страницу поддержки MS.
Не могли бы вы поделиться своим решением на Github. Или новое решение, позволяющее воспроизвести то, что вы видите. Ваша ошибка кажется очень странной





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