如何以用户选择的单位显示温度

亚历克斯·查德

我有一个 WPF 应用程序,可以在模型中以摄氏温度保存用户定义的温度值。这些是在带有数字掩码的文本框中输入的,这些掩码绑定到 VM 上的整数属性。

我想让用户能够输入摄氏或华氏温度。这是由一个简单的用户设置控制的。因此,该值也必须以正确的单位显示在文本框中。

我试过使用转换器,但没有取得太大的成功。我可以让转换器工作,但不是我想要的。

当 UserControl 加载时,值可能需要从摄氏度转换为华氏度。我能够使用此转换器使其正常工作:

    public class CelciusToFahrenheit : IValueConverter
    {
        /// <summary>
        /// Converts from Celsius to Fahrenheit if required by user settings
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double returnValue = System.Convert.ToInt32(value);

            if (Settings.Default.FahrenheitFlag)
            {
                returnValue = (returnValue * 1.8) + 32;
            }

            return Math.Floor(returnValue);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            int returnValue = System.Convert.ToInt32(value);

            if (Settings.Default.FahrenheitFlag)
            {
                returnValue = System.Convert.ToInt32((returnValue - 32) / 1.8);
            }

            return returnValue;
        }
    }

这里的问题是,这也会在用户输入值时转换该值。这意味着如果您尝试输入 66,由于舍入错误,最终会得到 77。

以前有人这样做过吗?我敢肯定这是可能的,但我一直在反对这个问题有一段时间了。

Moo-果汁

我不相信这是您应该进行转换的地方。您的模型具有温度属性,正如您所说,它始终存储为摄氏度。这就是它应该保持的方式。

这里不需要值转换器,但可能希望将此计算移动到您的 ViewModel 中,并让getset属性根据用户设置确定必须进行的转换,并一起避免使用值转换器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

传感器:如何以华氏温度显示温度?

如何以分钟为单位显示php microtime?

如何以天:小时:分钟:秒为单位显示毫秒

如何以ssms为单位显示执行时间?

如何以千字节为单位显示网页大小?

如果超过1000克,如何以公斤为单位显示产品重量

如何以分钟为单位计算和显示时差Angular2

如何以编程方式显示自定义用户位置

如何以圆圈显示用户个人资料图片?

如何以角度获取和显示实时用户通知?

如何以颜色显示wordpress用户名?

如何以Django形式显示过滤的选择列表

如何以symfony形式显示字体真棒图标选择

如何以编程方式突出显示QTreeView中的选择?

如何隐藏/显示用户选择的输入字段?

如何以pi为单位以弧度为单位输出?

如何以分钟为单位获取时差

如何以毫秒为单位解析ZonedDateTime

如何以像素为单位滚动DataGridView

如何以绝对单位设置列宽

如何以字节为单位播放视频?

如何以天、小时和分钟为单位显示下一个生日倒计时?

如何以帧而不是秒为单位显示当前媒体播放器的位置-UWP MediaPlayerElement

苹果系统。如何以编程方式获取CPU温度

如何以编程方式获取android cpu温度

确定iOS 10(摄氏/华氏度)上用户的“温度单位”设置

如何根据温度显示不同的颜色?

如何让 munin 监控和显示 CPU 温度

最终用户添加选择条件时如何以Windows窗体更新DataGridView