为这个奇怪的标题道歉。我不知道还能怎么说。
我得到的是3个TextBoxes数据绑定到一些值。
我需要做的是让textboxes的值1作为其他2个文本框的计算结果自动计算。
在谷歌搜索之后,我发现使用IMultiValueConverter接口应该可以解决我的问题。确实如此。但只有一种方法。
例如:
TextBox 1* TextBox 2= TextBox 3
但反之亦然:
TextBox 3/ TextBox 2= TextBox 1
后者是我在完成时遇到的困难。不管我怎么做,相反的计算都不会成立。
我已经实现了2个IMultiValueConverters,每个都用于2个TextBoxes(因为它有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方法的返回值被设置为空。这是因为每当我返回value参数时,我都会得到一个异常,告诉我不能从字符串转换为一维数组。
我做错了什么?
任何帮助都是非常感谢的。
提前谢谢。
附言:我对Converters还是个新手。我最近才开始玩它。
发布于 2011-01-12 17:53:32
多值转换的工作原理如下:
因此您的ConvertBack应该返回一个包含TextBox1和TextBox2值的数组...如果您只想更新示例的TextBox1,您可以执行以下操作:
return new object[] { myTextBox1String, Binding.DoNothing };编辑:链接到MSDN ConvertBack:http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter.convertback.aspx
https://stackoverflow.com/questions/4666137
复制相似问题