2012-03-06 56 views
3

我有一个DateTime字段类:Silverlight:通过XAML设置DateTime属性?

public class TimelineObject : FrameworkElement 
    { 
     private DateTime date; 
     public DateTime Date 
     { 
      get { return date; } 
      set { date = value; } 
     } 
    } 

当我尝试设置日期在XAML这样

<TimelineObject Date="3/1/2011"/> 

我得到一个XAMLParseException:

Failed to create a 'System.DateTime' from the text '3/1/2011'. 

据正如我所看到的,字符串的格式是正确的(ShortDatePattern,如描述here)。我究竟做错了什么?

回答

3

尝试为DateTime类型创建TypeConverter,该类型将DateTime转换为/从字符串值转换为TypeConverterAtrribute并将其指定为Date属性。 要小心,最好在自定义TypeConverter中使用InvariantCulture。在其他情况下,您可能会在可能使用不同文化设置的客户端计算机上遇到问题。

+0

谢谢,那正是我需要的信息。我最终使用了TypeConverter(typeof(DateTimeTypeConverter))',所以我不需要编写自定义转换器。 – Phasma 2012-03-08 08:35:25

+2

DateTimeTypeConverter在System.Windows.Controls中。它可以像这样使用:'[TypeConverter(typeof(DateTimeTypeConverter))] public DateTime MaxDate { get {return(DateTime)GetValue(MaxDateProperty); } Set {SetValue(MaxDateProperty,value);} set {SetValue(MaxDateProperty,value);} ' }' – Phasma 2012-03-08 08:42:41