xamarin - 用户界面在点击之前不会加载
问题描述
我最近首次在 iOS 上启动了我的 Xamarin 应用程序。该应用程序在 Android 上完美运行。但是,在 iOS 上,用户界面在我触摸屏幕之前不会完全加载。这与动态创建的绑定和 ui 元素有关。例如,这个按钮:
<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
s 完全不可见(未加载图像)。单击屏幕后,一切都开始工作。有人知道发生了什么吗?
[编辑]:这甚至适用于我在代码中未引用的控件。例如:
<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 在单击之前不会加载它的源代码。如果我删除绑定并直接输入源代码,一切正常。我使用调试器检查扩展代码是在页面启动时执行还是在单击后执行,结果发现它在启动时运行。但是由于某种原因,单击后图像仍会显示。
解决方案
我已收到 Microsoft 支持部门的回复。他们找到了问题的根源。这是一个名为 Forms9Patch 的 NuGet 包,它导致了问题(https://baskren.github.io/Forms9Patch/)。目前尚不清楚它如何影响渲染,但从项目中删除包解决了这个问题。我会联系包所有者。
推荐阅读
- stripe-payments - 0 美元订阅的条带处理费
- javascript - 单选按钮是选择多个项目而不是选择一个项目
- javascript - 从函数 div 加载时,jquery appendTo 效果淡入淡出
- sql - 内连接、自然连接和等值连接
- python - Python 中 Google Text-to-Speech API 的 Speed 和 Pitch 的有效值
- docker - Vue.Js Docker 变量
- android - 如何使用 DBFlow 在外部存储中备份数据库
- node.js - Dialogflow 和 google action MediaObject 集成
- c# - .net core 2.0 解析器问题与身份角色
- javascript - 无法将 nightwatch.js 页面对象的 locateStrategy 设置为“链接文本”