Mvvcross WithFallback на xamarin IOS - PullRequest
       85

Mvvcross WithFallback на xamarin IOS

0 голосов
/ 16 октября 2018

Я использую MvvmCross на xamarin iOS.Я использую свободный для привязок на ViewModel и JSON.Я хотел попробовать функцию WithFallback (), но когда свойство моего ViewModel (в данном случае строка), становится пустым или пустым, оно ничего не делает.Я попробовал это:

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

И еще один вопрос - как я могу связать этот запасной вариант со свойством viewmodel или json.Большое спасибо!

1 Ответ

0 голосов
/ 20 октября 2018

Fallback будет использоваться только в случае сбоя привязки, а не в том случае, если свойство существует и имеет значение null или что-либо еще.

Подробнее об этом можно прочитать в официальной документации .

В вашем случае я бы предложил вам использовать 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>();
...