奇妙なタイトルのためのApollogies。私は他にそれを置く方法を知らなかった。IMultiValueConverter + MultiBinding - データバインド値の逆算術計算?
私が持っているものは3つのテキストボックスデータバインドされたいくつかの値です。
私がする必要があるのは、他の2つのテキストボックスの計算の結果としてTextBoxesの1の値を自動的に計算することです。
Googleが行った後、IMultiValueConverterインターフェイスを使用すると問題が解決するはずです。します。しかし、唯一の方法です。例えば
:
テキストボックス1 *テキストボックス2 =テキストボックス3
その逆もまた真である:
テキストボックス3 /テキストボックス2 =テキストボックス1
後者は何か私は完了に問題があります。私が何をするにしても、逆の計算は固執しません。
私は2つのテキストボックス(それぞれ2つの異なる計算があるため)の2つのIMultiValueConvertersを実装しました。
コンバータ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に。これは、値のパラメータを返すたびに、文字列から1次元配列に変換できないという例外が発生するためです。
私は間違っていますか?
ご迷惑をおかけして申し訳ありません。
ありがとうございました。
P.S.私はConvertersにとってかなり新しいです。私は最近それを使って遊んで始めました。
[OK]をどのように私はこれを説明します...その作品を! 100%。しかし、その奇妙な。 ConvertBackが呼び出されると、TextBox 3から値が取得され、TextBox 1に割り当てられました。ちょっと動き回ると、私はこれを私の利点に使うことができると思いました。だから私は、他のコンバータ私は、コードのブロックを作成し、何とか最初のコンバーターのConvertBackメソッドで実装しました。 TextBox 1、TextBox 2またはTextBox 3の値が変更されると、正しい計算が行われます。ご助力ありがとうございます。 – GaaTY