在 Windows 8.1 中的 XAML 应用程序中使用 ValueConversion

本文关键字:ValueConversion 应用程序 XAML Windows 中的 | 更新日期: 2023-09-27 18:37:19

我正在为我为工作创建的温度Windows Phone 8.1应用程序创建一个简单的值转换器。看,我在这里找到了一个很好的例子(http://www.nullskull.com/faq/74/using-convertback-method-in-an-ivalueconverter.aspx)。

所以,很高兴找到这个例子,我继续我的wp8.1应用程序继续我的工作。问题是,MSDN说它在8.1和许多平台上都不受支持。

这个简短的介绍引出了以下问题:是否可以在Windows 8.1中实现IValueConverter接口而不必使用通用方法:

Convert(对象值,类型目标类型,对象参数,字符串语言)和ConvertBack(对象值,类型目标类型,对象参数,字符串语言)

您将能够在下面找到我尝试使用的示例中的代码。感谢您的见解!

[ValueConversion(typeof(double), typeof(double))]
public class FahrenheitToCelsiusConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null)
        {
            throw new ArgumentNullException("value");
        }
        // Fahrenheit to Celsius
        double fahrenheit;
        if (double.TryParse(value.ToString(), out fahrenheit))
        {
            var celsius = (fahrenheit - 32) * 5 / 9;
            return celsius;
        }
        throw new ArgumentException("value must be double");
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null)
        {
            throw new ArgumentNullException("value");
        }
        // Celsius to Fahrenheit
        double celsius;
        if (double.TryParse(value.ToString(), out celsius))
        {
            var fahrenheit = celsius * 9 / 5 + 32;
            return fahrenheit;
        }
        throw new ArgumentException("value must be double");
    }

在 Windows 8.1 中的 XAML 应用程序中使用 ValueConversion

您没有正确实现接口。

两种方法的签名是

public object Convert(object value, Type targetType, 
        object parameter, string language)
public object ConvertBack(object value, Type targetType, 
        object parameter, string language)

请注意,最后一个参数是字符串,而不是区域性信息。您之后的示例是针对 WPF 的示例。您可以参考此示例,它是针对WP的。