2016-06-29 1 views
1

У меня есть требование для расширения до Stuart'sanswer, связанного с форматированием строки в кресте MVVM для iOS во время выполнения. Я хочу передать в сложном объекте во время выполнения и оценить его в значение конвертора, в основном достичь того же, что я могу на андроид с Тибетского связывания как так:MVVM Перекрестная привязка со сложной строкой формата

local:MvxBind="Text 'Awaiting ' + Name + ' For 10 Minutes' " /> 

Пробовал до сих пор

set.Bind(txtTitle).To(vm => vm.Name).WithConversion("StringFormatPlus", new { before = "Awaiting", after = " For 10 minutes" }); 

Я попытался включить параметр объекта в динамический, но для этого требуется ссылка на Microsoft c sharp dll, поэтому я не уверен, что это путь.

public class StringFormatPlusValueConverter : MvxValueConverter 
{ 
    public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value == null) 
      return null; 

     if (parameter == null) 
      return value; 

     var dynamicParameter = parameter as dynamic; 
     var before = dynamicParameter.before; 
     var after = dynamicParameter.after; 

     var format = "{0} {1} {2}"; 

     return string.Format(format, before, value, after); 
    } 
} 

Обходной я использую, чтобы создать дополнительный геттер свойство на модели представления, что я форматировать, как мне нравится, и связывание с, что в контроллере представления IOS. Он работает, но он не идеален и загромождает мою модель представления с сильно связанной логикой представления.

ответ

4

Вы можете достичь того, чего хотите, посредством Fluent Binding, используя метод SourceDescribed. Найдено в MvvmCross.Binding.BindingContext namespace.

public MvxFluentBindingDescription<TTarget, TSource> SourceDescribed(MvxBindingDescription description); 
public MvxFluentBindingDescription<TTarget, TSource> SourceDescribed(string bindingDescription); 

Реализация Пример:

set.Bind(txtTitle).SourceDescribed("'Awaiting ' + Name + ' For 10 Minutes'"); 
+0

работал отлично спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^