【问题标题】:How to does WindowsRT Data-binding do type conversion without TypeConverterAttributeWindowsRT 数据绑定如何在没有 TypeConverterAttribute 的情况下进行类型转换
【发布时间】:2013-06-20 17:57:17
【问题描述】:

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

我现在在 TypeConverterAttribute doesn't exist 的 WindowsStore 应用程序中查看同样的问题。

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    这次对话的基本摘要是:

    • WinRT 没有类似TypeConverterAttribute 的东西
    • 少数 WinRT 控件确实有少量它们将应用的内部转换
    • 没有关于这些控制和转换的公开信息

    【讨论】:

    • 啊,这听起来有点令人失望。我正在开发一个用户控件,但缺少它会削弱它在 XAML 中的使用。
    【解决方案2】:

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

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

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

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

    要回答您的问题,没有元数据提示,您只需创建转换器,然后在自定义数据绑定旁边显式分配转换器。

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 2015-06-28
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多