1

在遵循TipCalc 的 iOS UI 教程时,我注意到所描述的绑定方法已过时(?),并决定开始使用此处描述的 Fluent 绑定。

一切都很好,除了一件事:教程上的 iOS 滑块使用了一个floatbetween 0and 1,而视图模型使用了一个intbetween 0and 100。所以,很明显,我需要在这里进行转换。

既然是双向绑定,怎么绑定才能转换成ViewModel -> ViewandView -> ViewModel呢?(理想情况下使用流畅的绑定)

另外,我想知道如何在“名称”下注册转换以便以后重用它。好像是在这条线上做的。

我试图在 MvvmCross 存储库中搜索这些命名转换,但我没有找到类似可用转换列表的任何东西,有这样的事情吗?

非常感谢您的帮助!!

4

1 回答 1

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->View和View->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中讨论

于 2013-10-31T16:49:48.133 回答