Xamarin 上的 Mvvcross WithFallback ios
Mvvcross WithFallback on xamarin ios
我在 xamarin iOS 上使用 MvvmCross。我在 ViewModel 和 json 上使用流利的绑定。我想尝试 WithFallback() 函数,但是当我的 ViewModel(在本例中为字符串)上的 属性 变为 null 或空时,它不会执行任何操作。我试过这个:
//This works
this.BindLanguage(Header1, "Title");
/* This works when vm.Message is not null or empty,
/* else print nothing, but don't call the WithFallback function
*/
set.Bind(myLbl).For(view => view.Text).To(vm => vm.Message).WithFallback("Something");
set.Apply();
另一个问题是我如何将回退与视图模型的 属性 或 json 绑定。非常感谢!
Fallback
仅在绑定失败时使用,如果 属性 存在且为 null 或其他情况则不会。
您可以在 official documentation 中阅读更多相关信息。
在你的情况下,我建议你使用 ValueConverter,像这样的东西会起作用:
public class MyValueConverter : MvxValueConverter<string, string>
{
protected override string Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
return !string.IsNullOrEmpty(value) ? value : "Something";
}
protected override string ConvertBack(string value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后是您的绑定:
set.Bind(myLbl).For(view => view.Text).To(vm => vm.Message).WithConversion<MyValueConverter>();
我在 xamarin iOS 上使用 MvvmCross。我在 ViewModel 和 json 上使用流利的绑定。我想尝试 WithFallback() 函数,但是当我的 ViewModel(在本例中为字符串)上的 属性 变为 null 或空时,它不会执行任何操作。我试过这个:
//This works
this.BindLanguage(Header1, "Title");
/* This works when vm.Message is not null or empty,
/* else print nothing, but don't call the WithFallback function
*/
set.Bind(myLbl).For(view => view.Text).To(vm => vm.Message).WithFallback("Something");
set.Apply();
另一个问题是我如何将回退与视图模型的 属性 或 json 绑定。非常感谢!
Fallback
仅在绑定失败时使用,如果 属性 存在且为 null 或其他情况则不会。
您可以在 official documentation 中阅读更多相关信息。
在你的情况下,我建议你使用 ValueConverter,像这样的东西会起作用:
public class MyValueConverter : MvxValueConverter<string, string>
{
protected override string Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
return !string.IsNullOrEmpty(value) ? value : "Something";
}
protected override string ConvertBack(string value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后是您的绑定:
set.Bind(myLbl).For(view => view.Text).To(vm => vm.Message).WithConversion<MyValueConverter>();