如何在没有TypeConverterAttribute的情况下进行WindowsRT数据绑定的类型转换

时间:2013-06-20 17:57:17

标签: data-binding windows-runtime windows-store-apps typeconverter

在上一个问题/答案中,我了解了Windows Phone中的数据绑定如何使用stringImageSource TypeConverterAttribute进行TypeConversion - 请参阅https://stackoverflow.com/a/16753488/373321

我现在正在查看TypeConverterAttribute doesn't exist的WindowsStore应用中的同一问题。

如果我使用WinRT数据绑定,那么数据绑定层仍然可以设法进行正确的转换。 MSDN documentation说:

  

此行为依赖于将字符串作为URI处理的基础类型转换,并调用BitmapImage(Uri)构造函数的等效项。

但是,我无法在任何地方看到有关它如何知道要进行转换的元数据。

我正在尝试构建自己的数据绑定实现 - 因此能够模仿WinRT的功能非常有用。

是否有可查询的元数据提示,告诉Xaml数据绑定要应用的转换?或者这个stringImageSource转换是否以某种方式烘焙到运行时,从CLR层隐藏?

如果它是隐藏的,是否有已知自动类型转换的列表,以便我可以将它们缓存在我的数据绑定实现中?

2 个答案:

答案 0 :(得分:2)

我通过Twitter与其中一个WinRT开发者(Tim Heuer)讨论了这个问题

此对话的基本摘要是:

  • WinRT没有TypeConverterAttribute
  • 之类的内容
  • 少数WinRT控件确实会有少量内部转换(
  • 没有关于哪些控件和转换
  • 的公开信息

答案 1 :(得分:0)

在Windows 8应用程序中,通常通过创建一个继承自IValueConverter的类来处理,然后将其与特定数据绑定一起分配。如msdn网站所述:

“通过实现IValueConverter接口并实现Convert方法来创建转换器。该方法应返回与绑定所针对的依赖项属性相同类型的对象,或者至少可以隐式强制转换为目标类型的类型。“

以下是完整文档的链接:http://msdn.microsoft.com/en-US/library/windows/apps/windows.ui.xaml.data.binding.converter.aspx

有关详细信息,请参阅“示例”部分。

要回答您的问题,没有元数据提示,您只需创建转换器,然后明确地将转换器与自定义数据绑定一起分配。