为奇怪的标题道歉。我不知道该怎么说。
我拥有的是 3 个文本框数据绑定到某些值。
我需要做的是让 TextBoxes 的值 1 自动计算为计算其他 2 个文本框的结果。
经过一番谷歌,我发现使用 IMultiValueConverter 接口应该可以解决我的问题。确实如此。但只有一种方式。
例如:
文本框 1 * 文本框 2 = 文本框 3
但反过来也是如此:
文本框 3 / 文本框 2 = 文本框 1
后者是我在完成时遇到的麻烦。无论我做什么,反向计算都不会坚持。
我已经实现了 2 个 IMultiValueConverters,每个用于 2 个文本框(因为它有 2 个不同的计算)。
转换器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 参数时,我都会收到一个异常,说我无法从字符串转换为一维数组。
我究竟做错了什么?
任何帮助深表感谢。
提前致谢。
PS我对转换器相当陌生。我最近才开始玩它。