Windows phone 8 需要mvvmcross windows phone 8流畅绑定转换帮助吗
我对流畅的绑定/转换有点迟钝。我有以下工作要做Windows phone 8 需要mvvmcross windows phone 8流畅绑定转换帮助吗,windows-phone-8,binding,mvvmcross,fluent,valueconverter,Windows Phone 8,Binding,Mvvmcross,Fluent,Valueconverter,我对流畅的绑定/转换有点迟钝。我有以下工作要做 set.Bind(TextBackStartColor).For(v => v.Text).To(vm => vm.TextBackStartColor).TwoWay() 但是,当我尝试添加WithConversion时,我需要一些关于如何调用转换器的帮助 set.Bind(TextBackStartColor).For(v => v.Text).To(vm => vm.TextBackStartColor).TwoWa
set.Bind(TextBackStartColor).For(v => v.Text).To(vm => vm.TextBackStartColor).TwoWay()
但是,当我尝试添加WithConversion时,我需要一些关于如何调用转换器的帮助
set.Bind(TextBackStartColor).For(v => v.Text).To(vm => vm.TextBackStartColor).TwoWay().WithConversion("Test")
在xaml中,转换器工作正常,在Android和Touch中,上述转换器工作正常
我试过了
核心:
但我的转换器从来没有接到过电话。
正如我所说,我的绑定工作得非常好,那么我在电话项目中缺少了什么来调用转换器呢?Android和iOS都会自动提取ValueConverter名称——它们所使用的机制在中进行了描述 Windows平台默认情况下不会这样做,因为Windows默认使用Xaml绑定 如果要添加命名值转换器的这种用法,则可以使用Windows Setup.cs中的代码执行此操作,如:
// call this in InitializeLastChance
Mvx.CallbackWhenRegistered<IMvxValueConverterRegistry>(FillValueConverters);
// add this method
private FillValueConverters(IMvxValueConverterRegistry registry)
{
registry.Fill(ValueConverterAssemblies);
}
// add this property
protected virtual List<Assembly> ValueConverterAssemblies
{
get
{
var toReturn = new List<Assembly>();
toReturn.AddRange(GetViewModelAssemblies());
toReturn.AddRange(GetViewAssemblies());
return toReturn;
}
}
//在InitializeLastChance中调用它
Mvx.注册时回拨(FillValueConverters);
//添加此方法
专用FillValueConverterRegistry(IMvxValueConverterRegistry注册表)
{
注册表。填充(ValueConverterAssembly);
}
//添加此属性
受保护的虚拟列表值ConverterAssembly
{
得到
{
var toReturn=新列表();
toReturn.AddRange(getViewModelAssemblys());
toReturn.AddRange(getViewAssemblys());
回归回归;
}
}
嘿,斯图尔特,非常感谢你一如既往的快速回答。这有助于获得核心转换器,但不是本机/设备转换器,以及如何获得内置/插件转换器,如Mvx颜色值转换器?让内置/插件Mvx颜色值转换器工作,参考mvvmcross颜色插件。再次感谢。
namespace DCS.Phone.NativeConverters
{
public class NativeTestValueConverter : MvxNativeValueConverter<TestValueConverter>
{
}
}
public sealed class TestConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string test = (string)value+"test";
return test;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
// call this in InitializeLastChance
Mvx.CallbackWhenRegistered<IMvxValueConverterRegistry>(FillValueConverters);
// add this method
private FillValueConverters(IMvxValueConverterRegistry registry)
{
registry.Fill(ValueConverterAssemblies);
}
// add this property
protected virtual List<Assembly> ValueConverterAssemblies
{
get
{
var toReturn = new List<Assembly>();
toReturn.AddRange(GetViewModelAssemblies());
toReturn.AddRange(GetViewAssemblies());
return toReturn;
}
}