流畅的绑定和转换

时间:2013-10-31 16:40:13

标签: data-binding mvvmcross

当关注Tutorial for TipCalc's iOS UI时,我注意到所描述的绑定方法已经过时(?)并决定开始使用像here所述的Fluent绑定。

一切都很顺利,除了一件事:教程中的iOS滑块在float0之间使用1值,视图模型之间使用int 0100。所以,显然,我需要在这里进行转换。

由于它是双向绑定,如何绑定它以转换为ViewModel -> ViewView -> ViewModel? (理想情况下具有流畅的约束力)

此外,我想知道如何在“名称”下注册转换以便以后重复使用它。就像它似乎在this line上完成的那样。

我尝试在MvvmCross回购中搜索这些命名转换,但我没有找到类似可用转换列表的内容,有这样的事情吗?

非常感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

  

我注意到所描述的绑定方法已过时(?)

该方法附带的消息是:

   [Obsolete("Please use SourceDescribed or FullyDescribed instead")]

如果您只想描述来源,请使用SourceDescribed;如果您想描述来源和目标,请使用FullyDescribed

   set.Bind(label).For(l => l.Text).SourceDescribed("'Hello ' + SourceText");

或:

   set.Bind(label).FullyDescribed("Text 'Hello ' + SourceText");
  

由于它是双向绑定,如何绑定它以转换为ViewModel - >查看和查看 - >视图模型?

双向转换器同时实现ConvertConvertBack

例如 - 见:

public class TwoWayConverter : MvxValueConverter<double, string>
{
    protected override string Convert(double value, Type targetType, object parameter, CultureInfo culture)
    {
        return (value*value).ToString();
    }

    protected override double ConvertBack(string value, Type targetType, object parameter, CultureInfo culture)
    {
        double doubleValue;
        double.TryParse(value, out doubleValue);
        return Math.Sqrt(doubleValue);
    }
}

来自https://github.com/MvvmCross/MvvmCross-Tutorials/blob/master/ValueConversion/ValueConversion.Core/Converters/Converters.cs

  

我想知道如何在“名称”下注册转换以便以后重复使用

名称通过反思和惯例进行注册 - 请参阅https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#referencing-value-converters-in-touch-and-droid

中的完整说明
  

可用转化列表

默认情况下,MvvmCross不会提供很多 - 这些主要是应用程序。

我所知道的唯一内置转换器适用于:

  • 颜色
  • 可见
  • 语言
  • 命令参数

https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#the-mvx-visibility-valueconverters

中讨论了所有这些问题