如何在Silverlight中的附加依赖项属性上设置TypeConverter?

时间:2010-08-27 13:19:44

标签: c# silverlight xaml silverlight-4.0 xamlparseexception

我的目标是能够在XAML中写下这个:

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

问题: Silverlight XAML无法从字符串中解析DateTime。所以在运行时我有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中编写字符串日期?

谢谢!

1 个答案:

答案 0 :(得分:7)

但附加属性有一个Get访问者 - 您尝试过putting the type converter on the Get accessor吗?

对于特定于版本的链接感到抱歉,它是包含相关信息的链接。从该页面:

  

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

     

4。您可以在Get访问器方法上属性属性级TypeConverter。这样可以对附加属性进行字符串转换。将TypeConverterAttribute应用于Get访问器方法而不是Set访问器方法可能看起来不直观,但这是XAML处理器期望找到附加属性的类型转换信息(如果有)的位置。有关更多信息,请参阅TypeConverters和XAML。