Binding 交换机上的mvvmcross绑定在释放时失败

Binding 交换机上的mvvmcross绑定在释放时失败,binding,xamarin,mvvmcross,Binding,Xamarin,Mvvmcross,我的MVVMCross应用程序中有一个奇怪的错误 考虑到以下情况: <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false" android:clickable="false" android:layout_alignParentRight="true" android:id="@+id/

我的MVVMCross应用程序中有一个奇怪的错误

考虑到以下情况:

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:clickable="false"
    android:layout_alignParentRight="true"
    android:id="@+id/activatedSwitch"
    local:MvxBind="Checked IsActive" />

  • 编译版本:14级
  • 最低版本:14级
  • 目标版本:14级

  • 链接:仅Sdk程序集

  • Android手机版本是4.1.2

当我在调试模式下运行应用程序时,一切正常

但是,当我在发布版中运行它时,绑定到Checked属性失败,出现以下错误:

E/MvxBind(11670):未找到12,70视图类型-开关


由于MvvmCross使用反射执行数据绑定,因此链接器没有看到选中的
属性,也没有将其包含在二进制文件中。有一个文件名
LinkerPleaseInclude.cs
,您可以对其进行编辑以添加对此属性的引用

比如:

public void Include(Switch @switch)
{
    @switch.CheckedChange += (sender, args) => @switch.Checked = !@switch.Checked;
}

MVVMCross的最新版本解决了此问题。下面的代码就足够了。
注意:-MvvmCross 7.0。我正在使用。但我怀疑这可以在发布之前解决

local:MvxBind="Checked IsActive"

为什么参数中需要@sign?因为“switch”在C#(switch/case)中是一个保留关键字。@允许您使用保留关键字作为标识符。