我对MvvMCross相当陌生,在将视图模型mvx属性绑定到iOS中的背景色时遇到问题。我从头开始设置了自己的项目,但为了确认它不是设置中的内容,所以我使用了MvxScaffolding创建了一个新项目。
我得到的错误是:
[ERROR] (MvxBind) Problem seen during binding execution for binding
TintColor for Colour - problem ArgumentException: Object of type
'MvvmCross.UI.MvxColor' cannot be converted to type 'UIKit.UIColor'.
查看模型:
using MvvmCross.UI;
namespace BindingTests.Core.ViewModels.Main
{
public class MainViewModel : BaseViewModel
{
public MvxColor Colour { get { return MvxColors.AliceBlue; }}
}
}
查看
using System;
using MvvmCross.Platforms.Ios.Presenters.Attributes;
using MvvmCross.Platforms.Ios.Views;
using BindingTests.Core.ViewModels.Main;
using MvvmCross.Binding.BindingContext;
namespace BindingTests.iOS.Views.Main
{
[MvxFromStoryboard(nameof(MainViewController))]
[MvxRootPresentation(WrapInNavigationController = true)]
public partial class MainViewController : BaseViewController<MainViewModel>
{
public MainViewController(IntPtr handle) : base(handle)
{
var set = this.CreateBindingSet<MainViewController, MainViewModel>();
set.Bind(LabelWelcome).For(l => l.BackgroundColor).To(vm => vm.Colour).WithConversion("NativeColor");
set.Apply();
}
}
}
有人有什么想法吗?我很沮丧 欢呼
忘记了,这在MvvmCross 5.x上很好用
答案 0 :(得分:3)
MvvmCross 6带有用于注册插件的新机制。
我们正在遇到两种问题:
1)我们在发布之前未发现的一个问题是,该框架现在假定插件程序集将在注册时加载。不幸的是,我们无法保证(正常情况下,除非明确使用/,否则运行时通常不会加载程序集。)
2)链接器以前不是问题,因为该框架具有引导程序文件,可确保不删除代码。我们在最重要的类上添加了Preserve
属性,但是显然这还不够。
在我写此答案时,我们正在研究一个新的实现,您可以跟踪状态in this issue。
作为一种变通方法(并真正回答问题),您可以将此行添加到iOS上的LinkerPleaseInclude
文件中(无论哪种方法无关紧要):var converter = new MvxNativeColorValueConverter();
。