当关注Tutorial for TipCalc's iOS UI时,我注意到所描述的绑定方法已经过时(?)并决定开始使用像here所述的Fluent绑定。
一切都很顺利,除了一件事:教程中的iOS滑块在float
和0
之间使用1
值,视图模型之间使用int
0
和100
。所以,显然,我需要在这里进行转换。
由于它是双向绑定,如何绑定它以转换为ViewModel -> View
和View -> ViewModel
? (理想情况下具有流畅的约束力)
此外,我想知道如何在“名称”下注册转换以便以后重复使用它。就像它似乎在this line上完成的那样。
我尝试在MvvmCross回购中搜索这些命名转换,但我没有找到类似可用转换列表的内容,有这样的事情吗?
非常感谢您的帮助!!
答案 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 - >查看和查看 - >视图模型?
双向转换器同时实现Convert
和ConvertBack
。
例如 - 见:
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/wiki/Value-Converters#referencing-value-converters-in-touch-and-droid
中的完整说明可用转化列表
默认情况下,MvvmCross不会提供很多 - 这些主要是应用程序。
我所知道的唯一内置转换器适用于:
https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#the-mvx-visibility-valueconverters
中讨论了所有这些问题