2014-02-26 68 views
1

将字符串传递给带有DateTime控制的DependencyProperty似乎并没有被允许:的DateTime XAML的WinRT

Cannot assign text value '00:00:00' into property 'StartTime' of type 'DateTime'

难道只是我还是不应该这是可能的吗?我想假设的解决方法是提供一个IValueConverter将字符串转换为DateTime对象。对于调度程序/日历像控制这有点烦人。

有些灯光?

+0

'DateTime time =“00:00:00”;'无效:'不能将类型'字符串'隐式转换为'System.DateTime'。至少对我来说,这是非常有意义的。 –

+0

Jap非常有意义,'DateTime time = Covert.ToDateTime(“00:00:00”);'将有助于代码转换问题,它会给一个对象提供今天的日期,但时间会像指定的那样初始化。如果你想用绑定来实现,则需要一个值转换器。 –

+0

我期待'DateTime'的日期部分未初始化,这种事情在WPF中起作用。另一方面,WinRT拒绝将其编译出来。我需要一个转换器,如果我绑定到一个字符串(不是我可以看到任何合理的理由这样做)似乎缺少的是WinRT的'DateTime'类型上的'TypeConverter/Attribute'。 – rtlayzell

回答

1

TypeConverter在WinRT中不可用,并且该平台似乎对某些UI类型具有一些内置转换 - 这种隐式转换不是其中之一。尽管你有几个选择。

  1. 正如你提到的 - 你可以使用一个值转换器
  2. 您可以确保您的DateTime属性绑定到一个DateTime视图模型属性。
  3. 将您的属性定义为String类型,并在控件内执行转换 - 如果您通常使用XAML字符串初始化该属性。将“String”附加到属性的名称以明确它是一个字符串也是值得的 - 例如, 'StartDateString'。
  4. 如果您想要同时使用DateTimeString类型的控件 - 您可以拥有两种类型的属性并在内部同步它们,确保防止属性更改处理程序中的重入。
  5. 申报财产为Object类型和检测所设置的值,其一是直接设置DateTime值,从String或其他类型(DateTimeOffsetTimeSpan,...?)转换或抛出不支持的值是什么类型。

不幸的是,直到Windows平台团队添加对TypeConverter属性的支持 - 您没有一个漂亮的解决方案。