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