6

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

我现在正在查看TypeConverterAttribute 不存在的 WindowsStore 应用程序中的相同问题。

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

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

但是,我在任何地方都看不到任何关于它如何知道要进行什么转换的元数据。

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

是否有可查询的元数据提示告诉 Xaml 数据绑定应用什么转换?或者这是以某种方式融入运行时的转换,隐藏在 CLR 层中stringImageSource

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

4

2 回答 2

2

我通过 Twitter 与一位 WinRT 开发人员 (Tim Heuer) 讨论了这个问题

这次谈话的基本总结是:

  • WinRT 没有类似的东西TypeConverterAttribute
  • 少数 WinRT 控件确实有少量内部转换,它们将应用
  • 没有关于这些控制和转换的公开信息
于 2013-12-04T23:30:56.493 回答
0

In Windows 8 Apps, this is generally handled by creating a class that inherits from IValueConverter, and is then assigned alongside the particular data binding. As stated on the msdn site:

"Create a converter by implementing the IValueConverter interface and implementing the Convert method. That method should return an object that is of the same type as the dependency property that the binding targets, or at least a type that can be implicitly coerced or converted to the target type."

Here is the link to the full doc: http://msdn.microsoft.com/en-US/library/windows/apps/windows.ui.xaml.data.binding.converter.aspx

See the "Examples" section for further detail.

To answer your question, there is no metadata hint, you simply create your converter and then explicitly assign the converter alongside your custom data binding.

于 2013-12-04T19:48:16.207 回答