Apollogies für den seltsamen Titel. Ich wusste nicht, wie ich es anders ausdrücken sollte.IMultiValueConverter + MultiBinding - Reverse Arithmatische Berechnungen auf Daten gebundene Werte?
Was ich habe, ist 3 TextBoxen Data-Bound zu einigen Werten.
Was ich tun muss, ist der Wert von 1 der TextBoxes automatisch berechnen als Ergebnis einer Berechnung der anderen 2 Textfelder.
Nach einigen Google's habe ich festgestellt, dass die Verwendung der IMultiValueConverter-Schnittstelle mein Problem lösen sollte. Es tut. Aber nur 1 Weg.
Zum Beispiel:
TextBox 1 * TextBox 2 = TextBox 3
Aber das gilt auch umgekehrt:
TextBox 3/TextBox 2 = TextBox 1
Letzteres ist das, was Ich habe Probleme mit dem Abschluss. Egal, was ich mache, die umgekehrte Berechnung wird nicht haften.
Ich habe 2 IMultiValueConverter implementiert, jeweils für die 2 TextBoxen (seit den 2 verschiedenen Berechnungen).
Converter 1:
Public Class SalaryConverter
Implements IMultiValueConverter
Public Function Convert(ByVal values() As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IMultiValueConverter.Convert
Dim salary As Double = 0
salary = (Math.Round(values(0) * (values(1) * 4)))
Return salary.ToString("C")
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetTypes() As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object() Implements System.Windows.Data.IMultiValueConverter.ConvertBack
Return Nothing
End Function
End Class
Converter 2:
Public Class RateConverter
Implements IMultiValueConverter
Public Function Convert(ByVal values() As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IMultiValueConverter.Convert
Dim rate As Double = 0
rate = ((values(0)/values(1))/4)
Return rate.ToString("C")
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetTypes() As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object() Implements System.Windows.Data.IMultiValueConverter.ConvertBack
Return Nothing
End Function
End Class
Sie werden sehen, dass die Rückgabewerte für die ConvertBack Methoden gesetzt nichts. Dies liegt daran, dass, wenn ich den Wert-Parameter zurückgebe, ich eine Ausnahme bekomme, die besagt, dass ich nicht vom String zum 1-dimensionalen Array konvertieren kann.
Was mache ich falsch?
Jede Hilfe wird sehr geschätzt.
Vielen Dank im Voraus.
P.S. Ich bin neu bei Konvertern. Ich habe erst kürzlich mit dem Spielen angefangen.
Ok Wie erkläre ich dies ... Seine Werke! 100%. Aber es ist komisch. Wenn ConvertBack aufgerufen wird, hat es den Wert von TextBox 3 übernommen und TextBox 1 zugewiesen. Nachdem ich ein bisschen herumgespielt habe, dachte ich, dass ich das vielleicht zu meinem Vorteil nutzen könnte. Also habe ich dann den Codeblock von dem anderen Konverter erstellt und irgendwie mit der ConvertBack-Methode des 1. Konverters implementiert. Wenn nun Werte von TextBox 1, TextBox 2 oder TextBox 3 geändert werden, werden die richtigen Berechnungen vorgenommen. Vielen Dank für Ihre Hilfe. – GaaTY