我试图将西藏绑定与值组合器一起使用,我无法在自定义实现中使用它,我不断收到此错误:
12-22 16:59:27.617 I/MvxBind (12700): 3.77 Failed to find combiner or converter for Counting
所以我复制粘贴了Wiki:
中的示例public class CountingValueCombiner
: MvxValueCombiner
{
public CountingValueCombiner()
{
Android.Util.Log.Error("!!!", "In combiner");
}
public override Type SourceType(IEnumerable<IMvxSourceStep> steps)
{
return typeof(int);
}
public override System.Boolean TryGetValue(IEnumerable<IMvxSourceStep> steps, out Object value)
{
var count = 0;
foreach (var input in steps)
{
object innerResult = input;
if (innerResult != null)
count++;
}
value = count;
return true;
}
}
在xml中:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#ff00ff"
android:textSize="30dp"
local:MvxBind="Text Counting(FirstName, Title)"/>
其中FirstName和Title是ViewModel的字符串属性。
这个类是在droid项目上,但无论如何,定位器似乎都没有找到组合器。
查看源代码后,我发现注册码位于MvxCoreBindingBuilder
,并在protected virtual void FillValueCombiners(IMvxValueCombinerRegistry registry)
我无法找到如何手动注册,因为我收到了绑定错误:
12-22 16:59:27.617 I/MvxBind (12700): 3.77 Failed to find combiner or converter for Counting
有关如何解决此问题的任何想法?
答案 0 :(得分:2)
由于值组合器的使用频率低于值转换器,因此默认情况下mvx不会在应用程序集中搜索它们。
好消息是,您自己搜索它们或者手动注册它们相对容易。要执行此操作,请在设置中查找值转换器回调 - 在https://github.com/MvvmCross/MvvmCross/blob/3.2/Cirrious/Cirrious.MvvmCross.Droid/Platform/MvxAndroidSetup.cs中 - 您可以覆盖代码中的回调块,为值组合器注册表添加自己的挂钩。
对不起,这个答案有点模糊 - 在3英寸触摸屏上很难说话。可以在一周内添加更多细节......