我有兩個文本框用於十進制輸入。文本框中的值的總和應等於窗體的屬性十進制值。兩個文本框的值的總和是互補的
我試圖用兩個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>
,其中總價值是形式的財產,而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();
}
這不起作用,因爲我應該將其中一個文本框初始設置爲等於總值,另一個設置爲零。理想情況下,我希望轉換器將互補和和文本框的值綁定到兩個窗體的小數屬性。我嘗試了很多可能性,但是我一直被困在這個愚蠢的問題上幾天,所以任何幫助都是可觀的。
?這意味着該值只能從代碼和**而不是UI中更改。 – ChrisF
Oneway實際上只是在將一個文本框綁定到另一個文本框時纔開始工作。使用Mode =「TwoWay」導致ConvertBack被調用,但ConvertBack接收一個對象作爲參數並返回object [],所以我無法正確實現它來轉換回來。 –