我想以这种方式禁用iOS中的Xamarin.Forms中的SwitchCell
:
<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:抛出了异常 通过调用的目标。 ---&GT; System.NullReferenceException: 你调用的对象是空的 在Xamarin.Forms.Cell.OnIsEnabledPropertyChanged(Xamarin.Forms.BindableObject可绑定,System.Object旧值, System.Object newvalue)[0x00000] in C:\ BuildAgent \工作\ aad494dc9bc9783 \ Xamarin.Forms.Core \细胞\ Cell.cs:197
如果我将true
的值设置为OnPlatform.iOS
则可行。如果我没有使用OnPlatform
标记并为所有平台设置IsEnabled="false"
,那么它运行良好 - 该假设是关于iOS模拟器中的错误。
答案 0 :(得分:1)
我认为问题是SwitchCell.IsEnabled
属性必须在SwitchCell
元素内。您正在使用表单:
<SwitchCell x:Name="mySC" Text="Foo" OnChanged="myFnc"/>
在设置IsEnabled
属性之前关闭切换单元格定义。相反,试试这个:
<SwitchCell Text="{Binding .}" >
<SwitchCell.IsEnabled>
<OnPlatform x:TypeArguments="x:Boolean">
<OnPlatform.iOS>
false
</OnPlatform.iOS>
<OnPlatform.Android>
true
</OnPlatform.Android>
</OnPlatform>
</SwitchCell.IsEnabled>
</SwitchCell>
以便在SwitchCell
的定义内设置属性,而不是在date
之外。我刚刚测试过,这适用于iOS和Android,但是使用你的代码在iOS上失败了。