如何在Silverlight中为附加依赖属性设置TypeConverter?

9

我的目标是能够用XAML编写以下内容:

<Grid>
    <Rectangle Fill="AliceBlue"
            myCore:MyTimePanel.BeginningDate="03/03/2010"
            />
</Grid>
问题: Silverlight XAML无法从字符串中解析DateTime。 因此,在运行时,我会收到XamlParseException“无法从该字符串创建DateTime”。
当我使用简单的DependencyProperty时,只需在getter / setter上添加TypeConverterAttribute即可使其工作。 就像这样(来自这里的想法):
[TypeConverter(typeof(DateTimeTypeConverter))]
public DateTime MyDate
{
    get { return (DateTime)GetValue(MyDateProperty); }
    set { SetValue(MyDateProperty, value); }
}

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

谢谢!

1个回答

7

但是,附加属性有一个Get访问器--您是否尝试将类型转换器放在Get访问器上

对于版本特定的链接表示抱歉,它包含了相关信息。从该页面得知:

3. 您可以在作为值类型的类型上设置TypeConverter属性。这样可以将该类型的所有值转换为字符串。有关更多信息,请参见TypeConverters和XAML。

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


你说得完全正确,谢谢! 我一直关注CLR属性(MyProp {get;set;}),但在附加的DP情况下,访问器是静态方法而不是属性。 - JYL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接