2010-08-27 42 views
5

我的目标是能够在XAML来写:如何在Silverlight中的附加依赖项属性上设置TypeConverter?

<Grid> 
    <Rectangle Fill="AliceBlue" 
      myCore:MyTimePanel.BeginningDate="03/03/2010" 
      /> 
</Grid> 

问题: 的Silverlight XAML不能从字符串解析日期时间。所以在运行时,我有XamlParseException“无法从该字符串创建DateTime”。

当我使用简单的DependencyProperty时,我只需在getter/setter上添加一个TypeConverterAttribute,它就可以工作。像这样(的想法来自here):

[TypeConverter(typeof(DateTimeTypeConverter))] 
public DateTime MyDate 
{ 
    get { return (DateTime)GetValue(MyDateProperty); } 
    set { SetValue(MyDateProperty, value); } 
} 

但有一个附加DP,没有的getter/setter。我能做些什么才能在XAML中编写字符串日期?

谢谢!

回答

5

但附加的属性有一个Get访问器 - 你试过putting the type converter on the Get accessor

对于特定于版本的链接,它是包含相关信息的链接。从该页开始:

3。您可以将类型级别的TypeConverter属性作为值类型。这样可以对所有类型的值进行字符串转换。有关更多信息,请参阅TypeConverters和XAML。

4。您可以在Get访问器方法上指定属性级别的TypeConverter。这使附加属性的字符串转换成为可能。将TypeConverterAttribute应用于Get访问器方法而不是Set访问器方法可能看起来并不直观,但这就是XAML处理器希望找到附加属性的类型转换信息(如果有的话)的地方。有关更多信息,请参阅TypeConverters和XAML。

+0

你是绝对正确的,谢谢! 我专注于CLR属性(MyProp {get; set;}),但在连接DP的情况下,访问器是静态方法而不是属性。 – JYL 2010-09-02 08:30:59

相关问题