У меня есть два текстовых поля для ввода с десятичной запятой. Сумма значений в текстовых блоках должна быть равна десятичному значению свойства формы.Два текстовых поля, сумма которых является взаимодополняющей
Я пытался использовать два MultiBindings с MultiValueConverter так:
XAML:
<TextBox x:Name="textBox1" ...>
<TextBox.Text>
<MultiBinding Converter="{StaticResource complementaryConverter}" Mode="OneWay">
<Binding ElementName="textBox2" Path="Text" />
<Binding Path="TotalValue" />
</MultiBinding>
</TextBox.Text>
</TextBox>
<TextBox x:Name="textBox2" ...>
<TextBox.Text>
<MultiBinding Converter="{StaticResource complementaryConverter}" Mode="OneWay">
<Binding ElementName="textBox1" Path="Text" />
<Binding Path="TotalValue" />
</MultiBinding>
</TextBox.Text>
</TextBox>
где TotalValue это свойство является формой, а преобразователь complementaryConverter является:
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
decimal result = (decimal)values[1] - (decimal)values[0];
return result.ToString();
}
Это не работает, потому что я должен сначала установить одно из текстовых полей, равное общему значению, а другое - нулю. В идеале я хотел бы, чтобы конвертер делал дополнительную сумму и значения текстовых полей, привязанных к двум десятичным свойствам формы. Я попробовал много возможностей, но я застрял в этой глупой проблеме пару дней, поэтому любая помощь будет заметна.
Почему вы используете 'Mode = "OneWay"'? Это означает, что значение может быть изменено только из кода и ** не ** пользовательского интерфейса. – ChrisF
Oneway фактически выполняет задание, когда я привязываю только одно текстовое поле к другому. Использование режима = «TwoWay» вызывало вызов ConvertBack, но ConvertBack получает один объект в качестве параметра и возвращает объект [], поэтому я не смог его правильно реализовать, чтобы преобразовать обратно. –