我正在尝试为我的MvvmCross项目创建自定义转换器。我继承自MvxBaseVisibilityValueConverter并只实现Convert方法。
我是否还需要实施特定于平台的项目,还是有办法重用特定于平台的可见性插件?
答案 0 :(得分:5)
我在过去几天一直在记录ValueConverters - 请参阅https://github.com/slodge/MvvmCross/wiki/Value-Converters
我刚刚将这个示例自定义可见性ValueConverter添加到文章中:
如果您需要创建自己的Visibility ValueConverter,那么MvxBaseVisibilityValueConverter<T>
和MvxBaseVisibilityValueConverter
基类可以帮助解决这个问题 - 例如:
public class SayPleaseVisibilityValueConverter : MvxBaseVisibilityValueConverter<string>
{
protected override MvxVisibility Convert(string value, object parameter, CultureInfo culture)
{
return (value == "Please) ? MvxVisibility.Visible : MvxVisibility.Collapsed;
}
}
使用这种方法,然后插件基类将在运行时将MvxVisibility
转换为合适的本机值 - 因此您只需要将此类类添加到核心PCL项目 - 您不需要添加该类的本机版本 - 而是插件中的基类将负责MvxVisibility -> native Visibility
转换。
除了&GT;除了插件的Visibility
枚举支持之外,最近的“西藏”绑定更改还为所有平台添加了自定义Visible
绑定属性 - 这些只是bool
更容易使用 - 他们应该在iOS和Android上“正常工作”,但在Windows平台上,只有切换到“西藏”mvx:Bi.nd
绑定方式时才能使用它们(所以不是每个人都喜欢的方法!)