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

C# 在Windows 8.1中的XAML应用程序中使用ValueConversion,c#,wpf,windows,xaml,windows-phone-8,C#,Wpf,Windows,Xaml,Windows Phone 8,我正在为我为工作创建的windows phone 8.1应用程序创建一个简单的值转换器。看,我在这里找到了一个很好的例子() 所以,很高兴找到了这个例子,我继续使用我的wp8.1应用程序继续我的工作。事实是,MSDN说8.1和很多平台都不支持它 这篇简短的介绍引出了以下问题:在Windows 8.1中是否可以实现IValueConverter接口而不必使用通用方法:Convert(对象值、类型targetType、对象参数、字符串语言)和ConvertBack(对象值、类型targetType、

我正在为我为工作创建的windows phone 8.1应用程序创建一个简单的值转换器。看,我在这里找到了一个很好的例子()

所以,很高兴找到了这个例子,我继续使用我的wp8.1应用程序继续我的工作。事实是,MSDN说8.1和很多平台都不支持它

这篇简短的介绍引出了以下问题:在Windows 8.1中是否可以实现IValueConverter接口而不必使用通用方法:Convert(对象值、类型targetType、对象参数、字符串语言)和ConvertBack(对象值、类型targetType、对象参数、字符串语言)

您可以在下面找到我尝试使用的示例中的代码。谢谢你的洞察力

[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)

注意最后一个参数是string,而不是CultureInfo。您所关注的示例是WPF。您可以参考,它是为WP提供的。

提供源代码MSDN说,它在8.1和许多平台上都不受支持。
。我尝试了代码,但当我尝试构建解决方案时,我的converter类中有错误,告诉我接口没有实现,并给出了提示@dkozl@kennyzx看来我读得太快了。msdn上的正确内容是“Windows 8.1、Windows Server 2012 R2、Windows 8、Windows Server 2012、Windows 7、Windows Vista SP2、Windows Server 2008(不支持服务器核心角色)、Windows Server 2008 R2(SP1或更高版本支持服务器核心角色;不支持安腾)”我刚才在我的计算机上所做的只是在字符串实例中更改cultureInfo实例。因为我两个都没有使用,所以我认为这会对我的代码产生任何影响,看起来是的。但这很奇怪。我想我举的例子是没有正确实现接口,这导致了我的构建错误,这正是我所做的!你确实是对的。我没有花时间去看接口的定义,这可以解释为什么它不起作用。