Xamarin.Forms 2.4 - OnIdiom bug

时间:2017-10-31 12:19:14

标签: c# xaml xamarin xamarin.forms

我在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属性解决了问题为了他。我试过了,但它对我没用。

编辑(20/11/17):对于遇到类似问题的人,我找到了一个现在可以解决的解决方法:将OnIdiom实例定义为带有键的资源(您可以在应用程序级别,页面上执行此操作)级别或控制级别)让控件使用键消耗它们。

0 个答案:

没有答案