C# 如何防止更新聚焦文本框
我正在做一个简单的WPF货币转换程序,它必须将美元转换成欧元,反之亦然。我使用IValueConverter在单个属性上创建两个文本框。但是,每当我更改一个文本框时,它都会转换另一个文本框,然后将该值转换回原始文本框。如何防止更新当前使用/聚焦文本框的源 MainWindow.xamlC# 如何防止更新聚焦文本框,c#,wpf,xaml,ivalueconverter,updatesourcetrigger,C#,Wpf,Xaml,Ivalueconverter,Updatesourcetrigger,我正在做一个简单的WPF货币转换程序,它必须将美元转换成欧元,反之亦然。我使用IValueConverter在单个属性上创建两个文本框。但是,每当我更改一个文本框时,它都会转换另一个文本框,然后将该值转换回原始文本框。如何防止更新当前使用/聚焦文本框的源 MainWindow.xaml <TextBox Name="tbDollar" Grid.Row="0" Grid.Column="1" Width="200" Height="20" Text="{Binding Price, Upd
<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>
可视示例:
我曾尝试寻找涉及System.Windows.Input.FocusManager的解决方案,但并不完全理解如何在convert方法中获取contol对象。我认为您应该使用两个不同的属性来绑定什么是“价格”(绑定源)?使用两个属性,如@Alexander建议。我认为它的行为与您描述的不同。如果在textbox1中键入,将使用转换后的值更新
价格
。然后也通过转换器在文本框2中显示新值。然后就停在那里了。目前尚不清楚Price
的潜在价值是什么。它是用另一种货币还是美元或欧元计算的?@Lorek价格绑定/属性的值应该是其中一个文本框中最后一个输入的值,然后另一个从属性中获取转换后的值。
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;
}