首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IMultiValueConverter + MultiBinding -数据绑定值的反向算术计算?

IMultiValueConverter + MultiBinding -数据绑定值的反向算术计算?
EN

Stack Overflow用户
提问于 2011-01-12 15:02:28
回答 1查看 2.7K关注 0票数 1

为这个奇怪的标题道歉。我不知道还能怎么说。

我得到的是3个TextBoxes数据绑定到一些值。

我需要做的是让textboxes的值1作为其他2个文本框的计算结果自动计算。

在谷歌搜索之后,我发现使用IMultiValueConverter接口应该可以解决我的问题。确实如此。但只有一种方法。

例如:

TextBox 1* TextBox 2= TextBox 3

但反之亦然:

TextBox 3/ TextBox 2= TextBox 1

后者是我在完成时遇到的困难。不管我怎么做,相反的计算都不会成立。

我已经实现了2个IMultiValueConverters,每个都用于2个TextBoxes(因为它有2个不同的计算)。

转换器1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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还是个新手。我最近才开始玩它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-12 17:53:32

多值转换的工作原理如下:

  1. 转换方法需要n个输入参数并将其转换为1个结果。在您的示例中: TextBox 1+ TextBox 2 => TextBox 3
  2. ConvertBack是相反的:它接受1个输入参数并将其转换为n个结果。在您的案例中: TextBox 3 => TextBox 1+ TextBox 2

因此您的ConvertBack应该返回一个包含TextBox1和TextBox2值的数组...如果您只想更新示例的TextBox1,您可以执行以下操作:

代码语言:javascript
复制
return new object[] { myTextBox1String, Binding.DoNothing };

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4666137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档