Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# WPF绑定:做一个温度转换器应用程序_C#_.net_Wpf_Vb.net - Fatal编程技术网

C# WPF绑定:做一个温度转换器应用程序

C# WPF绑定:做一个温度转换器应用程序,c#,.net,wpf,vb.net,C#,.net,Wpf,Vb.net,我正在做一个基本上有两个文本框的小应用程序。您将在TextBoxA中输入华氏温度,在TextBoxB中输入摄氏温度 当文本在TextBoxA中更改时,我希望在TextBoxB中显示等效的摄氏度值,反之亦然 我可以很容易地想出解决这个问题的办法,但我正在努力变得聪明一点 除了做数学运算的Convert类之外,有没有其他方法可以在Xaml中完成这一切?因此,基本上我希望一个文本框的TextChanged事件将其值传递到一个转换器类中,该类被计算并发送到另一个文本框,反之亦然 任何人都知道我如何做到这

我正在做一个基本上有两个文本框的小应用程序。您将在TextBoxA中输入华氏温度,在TextBoxB中输入摄氏温度

当文本在TextBoxA中更改时,我希望在TextBoxB中显示等效的摄氏度值,反之亦然

我可以很容易地想出解决这个问题的办法,但我正在努力变得聪明一点

除了做数学运算的Convert类之外,有没有其他方法可以在Xaml中完成这一切?因此,基本上我希望一个文本框的TextChanged事件将其值传递到一个转换器类中,该类被计算并发送到另一个文本框,反之亦然

任何人都知道我如何做到这一点。。。如果可能的话?


<TextBox x:Name="CelcuiusTextBox" Text="{Binding Text, ElementName=FahrenheitTextBox, Converter={StaticResource FahrenheitToCelciusConverter}}"/>
<TextBox x:Name="FahrenheitTextBox" Text="{Binding Text, ElementName=CelciusTextBox, Converter={StaticResource CelciusToFahrenheitConverter}}"/>
假设存在两个不同的转换器。当然,您可以编写一个转换器,它可以以不同的模式从celcius转换或转换到celcius。


<TextBox x:Name="Celsius" />
<Textbox x:Name="Fahrenheit" Text="{Binding Text, ElementName=Celsius, Mode=TwoWay, Converter={StaticResource CelsiusToFahrenheitConverter}}" />
假设存在两个不同的转换器。当然,您可以编写一个转换器,它可以以不同的模式从celcius转换或转换到celcius。


<TextBox x:Name="Celsius" />
<Textbox x:Name="Fahrenheit" Text="{Binding Text, ElementName=Celsius, Mode=TwoWay, Converter={StaticResource CelsiusToFahrenheitConverter}}" />
当您更新C时,F将获得值并将其转换。更新F时,它将转换回C并将值推送到Celcius文本框。



当您更新C时,F将获得值并将其转换。更新F时,它将转换回C,并将值推送到Celcius文本框。

我无法获取它。你想用转换器还是不用转换器来完成这项任务?我搞不懂。您希望使用或不使用转换器来完成任务吗?如果您只绑定一个
文本框
,那么一个转换器就足够了,但是要双向执行它。您好,Kent。它可以正常工作,但是当一个文本框更新另一个文本框时,转换器会再次触发,并且会反弹。你能想出一种方法来解决这个问题吗?如果你只绑定一个
文本框
,那么一个转换器就足够了,但是要双向地做。嗨,肯特。它可以正常工作,但是当一个文本框更新另一个文本框时,转换器会再次触发,并且会反弹。你能想个办法解决这个问题吗?嗨,杰。如果我只使用一个转换,如何知道要转换的值是摄氏度还是华氏度?@Bob An
IValueConverter
具有
convert
ConvertBack
两种方法。因此,在我上面的示例中,有一个
celsiustofahernheittconverter
。您可以在
Convert()
中实现从C到F的转换,在
ConvertBack
中实现从F到C的转换。华氏
TextBox
中的
two-way
绑定从摄氏
TextBox
获取值时将调用
Covert()
,将值推送到摄氏
TextBox
时将调用
ConvertBack()
。当然,谢谢Jay。我现在可以用kent的例子,虽然我更喜欢用你的方式,也就是说,只用一个转换器。使用1转换器,当顶部文本框的文本发生变化时,底部文本框也会发生变化,但实际上,在我改变文本后,我必须从botton文本框中单击,以更新顶部文本框。你知道我能做些什么吗?谢谢lot@Bob您可以向绑定中添加
UpdateSourceTrigger=PropertyChanged
TextBox
的默认值是
UpdateSourceTrigger=LostFocus
。您好。如果我只使用一个转换,如何知道要转换的值是摄氏度还是华氏度?@Bob An
IValueConverter
具有
convert
ConvertBack
两种方法。因此,在我上面的示例中,有一个
celsiustofahernheittconverter
。您可以在
Convert()
中实现从C到F的转换,在
ConvertBack
中实现从F到C的转换。华氏
TextBox
中的
two-way
绑定从摄氏
TextBox
获取值时将调用
Covert()
,将值推送到摄氏
TextBox
时将调用
ConvertBack()
。当然,谢谢Jay。我现在可以用kent的例子,虽然我更喜欢用你的方式,也就是说,只用一个转换器。使用1转换器,当顶部文本框的文本发生变化时,底部文本框也会发生变化,但实际上,在我改变文本后,我必须从botton文本框中单击,以更新顶部文本框。你知道我能做些什么吗?谢谢lot@Bob您可以向绑定中添加
UpdateSourceTrigger=PropertyChanged
TextBox
的默认值是
UpdateSourceTrigger=LostFocus