我最近首次在iOS上启动了Xamarin应用。该应用程序可在Android上完美运行。但是,在iOS上,直到我触摸屏幕,UI才会完全加载。这与动态创建的绑定和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
是完全不可见的(未加载图像)。单击屏幕后,一切开始工作。有人知道发生了什么吗?
[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除非单击,否则不会加载其源。如果我删除绑定并直接输入源,一切正常。 我使用调试器检查了扩展代码是在页面启动时还是在单击后执行,结果证明它在启动时运行。但是由于某些原因,单击后图像仍在显示。
答案 0 :(得分:0)
我已经收到Microsoft支持的回复。他们找到了问题的根源。这是一个导致Forms9Patch的NuGet程序包,引起了问题(https://baskren.github.io/Forms9Patch/)。目前尚不清楚它如何影响渲染,但是从项目中删除包解决了该问题。我将与此联系包裹所有者。