交换机上的 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绑定命令不起作用