交换机上的 mvvmcross 绑定在发布时失败

Posted

技术标签:

【中文标题】交换机上的 mvvmcross 绑定在发布时失败【英文标题】:mvvmcross binding on switch fails on release 【发布时间】:2014-02-25 15:21:28 【问题描述】:

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

考虑以下场景:

<Switch
    android:layout_
    android:layout_
    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。

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

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

E/MvxBind (11670): 12,70 View type not found - Switch

【问题讨论】:

【参考方案1】:

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

类似:

public void Include(Switch @switch)

    @switch.CheckedChange += (sender, args) => @switch.Checked = !@switch.Checked;

【讨论】:

为什么我们需要 @ 登录参数? 因为“switch”是 C# 中的保留关键字(switch/case)。 @ 允许您使用保留关键字作为标识符。 docs.microsoft.com/en-us/dotnet/csharp/language-reference/…【参考方案2】:

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

local:MvxBind="Checked IsActive"

【讨论】:

以上是关于交换机上的 mvvmcross 绑定在发布时失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin.Android 中通过 MVVMCross 绑定 OxyPlot

Xamarin Forms + Mvvmcross绑定命令不起作用

MvvmCross:GestureRecognized 绑定到 ViewModel 动作

RabbitMQ发布订阅模式

如何将 MVVMCross 与 C# 的标记绑定

MvvmCross 绑定到 UIButton.TitleLabel.Text