Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止更新聚焦文本框_C#_Wpf_Xaml_Ivalueconverter_Updatesourcetrigger - Fatal编程技术网

C# 如何防止更新聚焦文本框

C# 如何防止更新聚焦文本框,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

我正在做一个简单的WPF货币转换程序,它必须将美元转换成欧元,反之亦然。我使用IValueConverter在单个属性上创建两个文本框。但是,每当我更改一个文本框时,它都会转换另一个文本框,然后将该值转换回原始文本框。如何防止更新当前使用/聚焦文本框的源

MainWindow.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>
可视示例:


我曾尝试寻找涉及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;
}