2013-05-06 17 views
9

Jak dodać format wiązania, który formatuje powiązaną wartość za pomocą ciągu.Format lub coś podobnego? W innych wątkach widziałem, że możesz podać parametr converterName.Wiązanie MvvMCross z ciągiem formatu

  • Czy istnieje konwerter dla tego problemu?
  • Gdzie mogę zobaczyć listę standardowych konwerterów MvvMCross v3?

Przeglądałem kod wkrótce, ale nie mogłem czegoś znaleźć. Wiem, że mogą się zdarzyć utracone informacje, które niszczy dwukierunkowo, ale chcę tego tylko do wyświetlania wartości. Mój konkretny przypadek to Wiązanie z DateTime.

bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate); 

moim życzeniem np .:

bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate).WithFormat("hh:mm"); 

Odpowiedz

17

Aby to zrobić, można po prostu stworzyć StringFormatValueConverter i można go używać jako parametr to ciąg formatu do wykorzystania.

powinno zająć około 2 minut, aby napisać ... tutaj, ja to udowodnić:

public class StringFormatValueConverter : 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 format = "{0:" + parameter.ToString() + "}"; 

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

następnie

set.Bind(myLabel).To(vm => vm.TheDate).WithConversion("StringFormat", "HH:MM:ss"); 

1 minuty 53 sekund;)

+0

dzięki. Chcę się tylko upewnić, że nie jest zaimplementowany konwerter. Napisanie własnego konwertera byłoby moim następnym krokiem :) Teraz mogę pokonać twój czas ^^ Ale jedno pytanie jest wciąż otwarte: Gdzie mogę zobaczyć listę standardowych konwerterów MvvMCross v3? –

+0

łatwa odpowiedź - obecnie w standardowej aplikacji "HotTuna" są ** none ** (niektóre można dodać za pomocą wtyczek, a jeden jest obecnie wymagany do bindowania w wielu językach) – Stuart

+0

ahh ok, teraz wiem, dlaczego nie mogłem znajdź jeden :) dzięki. –