我正在开发一个简单的 WPF 货币转换器程序,该程序必须将美元转换为欧元,反之亦然。我将 IValueConverter 用于单个属性上的两个文本框。这可行,但是每当我更改一个文本框时,它都会转换另一个文本框,然后将该值转换回原始文本框。如何防止更新当前使用/聚焦的文本框的源?
主窗口.xaml
<TextBox Name="tbDollar" Grid.Row="0" Grid.Column="1" Width="200" Height="20" Text="{Binding Price, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource converterToDollar}}"></TextBox>
<TextBox Name="tbEuro" Grid.Row="1" Grid.Column="1" Width="200" Height="20" Text="{Binding Price, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource converterToEuro}}"></TextBox>
EuroToDollarConverter.cs
public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture) {
double price;
if(value!=null && Double.TryParse((string)value, out price)) return price*1.137;
return null;
}
视觉示例:
我尝试寻找涉及 System.Windows.Input.FocusManager 的解决方案,但并不完全了解如何在 convert 方法中获取 contol 对象。