2013-10-04 9 views
5

Widziałem następujące pytanie: how-do-you-apply-a-valueconverter-to-a-convention-based-caliburn-micro-binding.Jak zastosować ValueConverter do opartego na konwencjach wiązania Caliburn.Micro?

Nie mogłem opublikować komentarza na ten temat, dlatego zamieszczam tutaj swoje pytanie.

Jak korzystać z wartości Caliburn.Micro w wersji ConventionManager.ApplyValueConverter w przypadku konwerterów wartości w przypadku korzystania z powiązania w konwencji?

Czy ktoś mógłby napisać przykład tutaj?

Odpowiedz

7

ApplyValueConverter jest zdefiniowany jako statyczny delegat Func<> w klasie ConventionManager.

W celu zapewnienia własnego konwertera w scenariuszach konferencyjnych wiążąca, trzeba zdefiniować własny Func<> w sposobie swojego inicjującego Configure(), coś takiego:

UWAGA: jestem zakładając Konwersję od string do Opacity.

public class AppBootstrapper : Bootstrapper<ShellViewModel> { 

    private static IValueConverter StringToOpacityConverter = new StringToOpacityConverter(); 

    public override void Configure() { 

     var oldApplyConverterFunc = ConventionManager.ApplyValueConverter; 

     ConventionManager.ApplyValueConverter = (binding, bindableProperty, property) => { 
      if (bindableProperty == UIElement.Opacity && typeof(string).IsAssignableFrom(property.PropertyType)) 
      //        ^^^^^^^   ^^^^^^ 
      //        Property in XAML  Property in view-model 
       binding.Converter = StringToOpacityConverter; 
       //     ^^^^^^^^^^^^^^^^^^^^^^^^^ 
       //     Our converter used here. 

      // else we use the default converter 
      else 
       oldApplyConverterFunc(binding, bindableProperty, property); 

     }; 
    } 

} 
+0

Wow, wiesz, że używam go od jakiegoś czasu, a ja nawet nie zdawałem sobie sprawy, że istnieje konwencja dla konwerterów wartości! Pozwala to zaoszczędzić sporo pisania! – Charleh

+0

@Charleh Najśmieszniejsze jest to, że nie wiedziałem, zanim OP zapytał :). Jestem szczęśliwy, że się tego nauczyłem. –

+1

To JEDNA rzecz, której nienawidzę, ale nigdy nie myślałam o sprawdzeniu, czy istnieje wsparcie dla ... (większość) konwerterów jest tak mało zarabiających, jeśli chodzi o ilość pisania w porównaniu do wypłaty! – Charleh

Powiązane problemy