Моя проблема заключается в следующем.
У меня есть 3 текстовых поля, связанных с 3 полями в наборе данных. TextBox_Rate , TextBox_Hours , TextBox_Salary .
Что мне нужно было для TextBox_Rate + TextBox_Hours быть = TextBox_Salary .
Я обнаружил, что это может быть достигнуто с помощью Multibinding и Converter .
Multibinding выглядит следующим образом:
<TextBox FontSize="14.667" HorizontalAlignment="Right" HorizontalContentAlignment="Right" Style="{StaticResource TextBoxStyle}">
<TextBox.Text>
<MultiBinding Converter="{StaticResource SalaryConverter}" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" ValidatesOnExceptions="True" NotifyOnValidationError="True" NotifyOnSourceUpdated="True" StringFormat="C">
<Binding Path="Rate Per Hour"/>
<Binding Path="Hours Per Month"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
И конвертер:
Public Class SalaryConverter
Implements IMultiValueConverter
Dim weeklyHours As Double = 0
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 Decimal = 0
If values(0).Equals(System.Windows.DependencyProperty.UnsetValue) Or values(1).Equals(System.Windows.DependencyProperty.UnsetValue) Then
Return salary
Else
salary = (Math.Round(values(0) * (values(1) * 4)))
weeklyHours = values(1)
Return salary
End If
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
Dim testVal As Decimal = CType((value.ToString.Replace("R ", "").Replace(",", "") / weeklyHours), Decimal) / 4
Return New Object() {testVal}
End Function
Конечный класс
Все это работает на 100%.Я получаю результаты, которые я хочу.Но и здесь возникает проблема ...
TextBox_Rate привязано к полю набора данных Rate , TextBox_Hours привязано к полю набора данных Часы и первоначально (до мультибиндинга) TextBox_Salary был привязан к полю набора данных Зарплата , но не связан с TextBox_Rate И TextBox_Hours.И значение, полученное из Multibinding, не обновляется до исходного поля «Зарплата», поскольку оно не привязано к этому полю.
Как установить привязку для обновления этого поля?
Спасибо заAdvance.