C# 在Windows 8.1中的XAML应用程序中使用ValueConversion
我正在为我为工作创建的windows phone 8.1应用程序创建一个简单的值转换器。看,我在这里找到了一个很好的例子() 所以,很高兴找到了这个例子,我继续使用我的wp8.1应用程序继续我的工作。事实是,MSDN说8.1和很多平台都不支持它 这篇简短的介绍引出了以下问题:在Windows 8.1中是否可以实现IValueConverter接口而不必使用通用方法:Convert(对象值、类型targetType、对象参数、字符串语言)和ConvertBack(对象值、类型targetType、对象参数、字符串语言) 您可以在下面找到我尝试使用的示例中的代码。谢谢你的洞察力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、
[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实例。因为我两个都没有使用,所以我认为这会对我的代码产生任何影响,看起来是的。但这很奇怪。我想我举的例子是没有正确实现接口,这导致了我的构建错误,这正是我所做的!你确实是对的。我没有花时间去看接口的定义,这可以解释为什么它不起作用。