Xamarin.Forms - 禁用SwitchCell OnPlatform抛出异常的iOS

我特林在Xamarin.Forms禁用SwitchCell为iOS这样:Xamarin.Forms - 禁用SwitchCell OnPlatform抛出异常的iOS

<SwitchCell x:Name="mySC" Text="Foo" OnChanged="myFnc"/> 

<SwitchCell.IsEnabled>

<OnPlatform x:TypeArguments="x:Boolean">

<OnPlatform.iOS>

false

</OnPlatform.iOS>

<OnPlatform.Android>

true

</OnPlatform.Android>

</OnPlatform>

</SwitchCell.IsEnabled>

当我运行在iOS模拟器此代码,抛出异常:

System.Reflection.TargetInvocationException:通过调用的目标异常已被抛出 。 ---> System.NullReferenceException: Xamarin.Forms.Cell.OnIsEnabledPropertyChanged(Xamarin.Forms.BindableObject bindable,System.Object oldvalue, System.Object newvalue)[0x00000]对象引用未设置为对象实例 在 C:\ BuildAgent \工作\ aad494dc9bc9783 \ Xamarin.Forms.Core \ \细胞Cell.cs:197

如果我为OnPlatform.iOS值设置为true它的工作原理。如果我没有使用OnPlatform标记并将其设置为例如IsEnabled="false"它适用于所有平台 - 假设是关于iOS模拟器中的一个错误。

回答:

我认为问题是SwitchCell.IsEnabled属性必须位于SwitchCell元素内。您正在使用表格:

<SwitchCell x:Name="mySC" Text="Foo" OnChanged="myFnc"/> 

它会在设置IsEnabled属性之前关闭开关单元定义。因此,该属性设置SwitchCell的定义,而不是在它之外内

<SwitchCell Text="{Binding .}" > 

<SwitchCell.IsEnabled>

<OnPlatform x:TypeArguments="x:Boolean">

<OnPlatform.iOS>

false

</OnPlatform.iOS>

<OnPlatform.Android>

true

</OnPlatform.Android>

</OnPlatform>

</SwitchCell.IsEnabled>

</SwitchCell>

:相反,试试这个。我刚刚测试过,并且在iOS和Android上都能正常工作,但是使用你的代码在iOS上失败了。

以上是 Xamarin.Forms - 禁用SwitchCell OnPlatform抛出异常的iOS 的全部内容, 来源链接: utcz.com/qa/259302.html

回到顶部