怪异标题的apollogies。我不知道该怎么说。

我拥有的是3个文本框数据限制到某些值。

我需要做的是,由于其他2个文本框的计算,具有自动计算文本框的值的值。

经过一些Google'之后,我发现使用ImultivalUeconverter接口应解决我的问题。确实如此。但是只有一种方式。

例如:

TextBox 1 * TextBox 2 = Textbox 3

但是相反也是如此:

TextBox 3 / textbox 2 =文本框1

后者是我完成的问题。无论我做什么,反向计算都不会粘。

我已经实现了2个ImultivalUeconverter,每个VERTBOXES(自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

最终课程

您会看到转换方法的返回值设置为“一无所有”。这是因为每当我返回值参数时,我都会得到一个例外,说我不能从字符串转换为1维数组。

我究竟做错了什么?

任何帮助深表感谢。

提前致谢。

PS我是转换器的新手。我最近才开始玩它。

有帮助吗?

解决方案

多价值转换的工作原理:

  1. 转换方法需要N输入参数并将其转换为1个结果。在您的情况下:文本框1 +文本框2 => textbox 3
  2. 转换是相反的:它采用1个输入参数并将其转换为n结果。在您的情况下:文本框3 => textbox 1 + textbox 2

因此,您的转换式返回包含TextBox1和TextBox2值的数组...如果您只想更新textbox1 for exemple,则可以做:

return new object[] { myTextBox1String, Binding.DoNothing };

编辑:链接到MSDN转换: http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter.convertback.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top