如何在Silverlight中的附加依赖项属性上设置TypeConverter?
问题描述:
我的目标是能够在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中编写字符串日期?
谢谢!
答
但附加的属性有一个Get访问器 - 你试过putting the type converter on the Get accessor?
对于特定于版本的链接,它是包含相关信息的链接。从该页开始:
3。您可以将类型级别的TypeConverter属性作为值类型。这样可以对所有类型的值进行字符串转换。有关更多信息,请参阅TypeConverters和XAML。
4。您可以在Get访问器方法上指定属性级别的TypeConverter。这使附加属性的字符串转换成为可能。将TypeConverterAttribute应用于Get访问器方法而不是Set访问器方法可能看起来并不直观,但这就是XAML处理器希望找到附加属性的类型转换信息(如果有的话)的地方。有关更多信息,请参阅TypeConverters和XAML。
你是绝对正确的,谢谢! 我专注于CLR属性(MyProp {get; set;}),但在连接DP的情况下,访问器是静态方法而不是属性。 – JYL 2010-09-02 08:30:59