2017-12-28 5 views
0

Ich habe eine benutzerdefinierte Ansicht mit einem benutzerdefinierten BindableProperty:Xamarin benutzerdefinierte BindableProperty mit Converter

public string Valore { 
      get { return (string)GetValue(ValoreProperty); } 
      set { SetValue(ValoreProperty, value); } 
     } 

    public static readonly BindableProperty ValoreProperty = 
     BindableProperty.Create(
      propertyName: nameof(Valore), 
      returnType: typeof(string), 
      declaringType: typeof(VolosTimePickerView), 
      defaultBindingMode: BindingMode.TwoWay, 
      propertyChanged: ValorePropertyChanged, 
      propertyChanging: ValorePropertyChanging 
     ); 

In meiner XAML, da der Wert von Valore ist ein nullable Int ich einen Konverter wie folgt verwenden müssen:

Wie kann ich das gleiche tun, ohne Converter={StaticResource NullableConverter in XAML-Seite, aber in Code hinter direkt auf der Eigenschaft?

Vielen Dank!

+0

Warum brauchen Sie es eine 'BindableProperty' zu sein? Warum kann es keine reguläre Eigenschaft sein, die 'INotifyPropertyChanged' implementiert? – Greggz

+1

Warum müssen Sie einen Konverter in Ihrem Code-Behind einstellen? Haben Sie in Erwägung gezogen, eine Nullable-Int BindableProperty verfügbar zu machen und dann im ValorePropertyChanged-Ereignishandler den Wert einer regulären String-Eigenschaft zu aktualisieren? In diesem Fall benötigen Sie keinen Konverter und die Logik wird in ContentView implementiert. Stattdessen, wenn Sie wirklich wollen, um Konverter von Code-behind Set versuchen, schauen Sie hier https://forums.xamarin.com/discussion/18849/how-do-i-use-ivalueconverter – user2297037

Antwort

0

Ihre Valore ist eine string. Versuchen Sie, es in Nullable<int> Valore umzuwandeln. Schau was passiert.

Und versuchen Sie, den Wert der Valore innerhalb Ihrer ViewModel auch zu binden. So würden Sie erhalten

Nullable<int> _Valore; 
public Nullable<int> Valore {get; set;} 
Verwandte Themen