我在XAML中的几个页面上使用OnIdiom标签,有时在一个页面上使用几次,当我在2.4之前的Xamarin.Forms版本中使用它时它工作正常。但是,当我更新到2.4并尝试部署我的应用程序(不更改任何代码)时,我从使用OnIdiom的几个地方收到错误,所有这些都是"没有为&找到属性,可绑定属性或事件#39; {我尝试使用OnIdiom的属性来到这里}',或者在值和属性之间使用不匹配的类型。"。 例如,以下XAML代码:
<Image Source="{Binding ImageSource, Converter={StaticResource BinaryToImageConverter}}" Aspect="AspectFit">
<Image.HeightRequest>
<OnIdiom x:TypeArguments="x:Double" Phone="150" Tablet="300" />
</Image.HeightRequest>
</Image>
导致以下错误: &#34;没有为&#39; HeightRequest&#39;找到的属性,可绑定属性或事件,或者值和属性之间的不匹配类型。&#34;。
我注意到了一些我想提及的事情:
1.我在我的所有XAML页面的代码隐藏中使用了[XamlCompilation(XamlCompilationOptions.Compile)]属性,我注意到当我从导致错误的页面中删除它时,我不再得到错误,那些页面也是加载很好。我不想删除这些属性,因为我认为它们可以加快速度,因为XAML编译在编译时而不是运行时发生。
2.这可能是巧合,但我注意到我得到的所有错误来自于我使用OnIdiom进行HeightRequest或WidthRequest属性以及我使用x的地方:TypeArguments =&#34; x:Double&#34; 。我在更多属性和其他页面上使用OnIdiom标记,这些页面由于某种原因不会导致错误。
3.我发现了一个错误报告,似乎符合我对Xamarin的bugzilla(https://bugzilla.xamarin.com/show_bug.cgi?id=58922)的描述,我在那里看到一个评论,其中该人称为OnIdiom标签定义x:Key属性解决了问题为了他。我试过了,但它对我没用。