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>();