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

Using ValueConversion in a XAML application in Windows 8.1

我正在为我为工作创建的温度 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(object value, Type targetType, object parameter, string language ) & 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");
    }

您没有正确实现接口。

两个方法的签名是

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

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

注意最后一个参数是字符串,不是 CultureInfo。您所追求的示例是针对 WPF 的。可以参考this sample,是WP用的