Аполлоги за странное название. Я не знал, как еще это выразить.
У меня есть 3 TextBoxes Data-Bound для некоторых значений.
Мне нужно иметь значение 1 из текстовых полей. Автоматически вычислять в результате вычисления двух других текстовых полей.
После некоторого Google'ing я обнаружил, что использование интерфейса IMultiValueConverter должно решить мою проблему. Оно делает. Но только 1 способ.
Например:
TextBox 1 * TextBox 2 = TextBox 3
Но верно и обратное:
TextBox 3 / TextBox 2 = TextBox 1
Последнее - это то, что у меня проблемы с завершением. Независимо от того, что я делаю, обратный расчет не сработает.
Я реализовал 2 IMultiValueConverters, каждый для 2 TextBox-ов (начиная с двух разных вычислений).
Конвертер 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
Конечный класс
Конвертер 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
Конечный класс
Вы увидите, что для возвращаемых значений для методов ConvertBack установлено значение Nothing. Это потому, что всякий раз, когда я возвращаю параметр value, я получаю исключение, говорящее, что я не могу преобразовать строку в одномерный массив.
Что я делаю не так?
Любая помощь очень ценится.
Заранее спасибо.
P.S. Я довольно новичок в конвертерах. Я только начал играть с этим недавно.