質問

奇妙なタイトルのアポロジー。他にどのように置くかわからなかった。

私が持っているのは、いくつかの値にデータバウンドされた3つのテキストボックスです。

私がする必要があるのは、他の2つのテキストボックスの計算の結果として、テキストボックスの1つの値を自動的に計算することです。

Googleの後、ImultivalueConverterインターフェイスを使用することで問題が解決することがわかりました。します。しかし、1つの方法だけです。

例えば:

TEXTBOX 1 * TEXTBOX 2 = TEXTBOX 3

しかし、逆も真実です。

Textbox 3 / TextBox2 = TextBox1

後者は、私が完了するのに苦労しているものです。私が何をしても、逆の計算は固執しません。

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

エンドクラス

変換方法の返品値が何にも設定されていないことがわかります。これは、値パラメーターを返すたびに、文字列から1次元配列に変換できないという例外が得られるためです。

私は何が間違っているのですか?

どんな助けも大歓迎です。

前もって感謝します。

PS私はコンバーターにかなり新しいです。私は最近それで遊んだばかりです。

役に立ちましたか?

解決

マルチバリューコンバートはこのように機能します:

  1. コンバートメソッドには、n入力パラメーターが必要であり、1つの結果に変換します。あなたの場合:TextBox1 + TextBox2 => TextBox3
  2. 変換バックは逆です。1インプットパラメーターを取り、n結果に変換します。あなたの場合:TextBox3 => TextBox1 + TextBox2

したがって、変換バックは、textbox1とtextbox2の値を含む配列を返す必要があります。

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