8

我的目标是能够用 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 中写入字符串日期?

谢谢 !

4

1 回答 1

7

但是附加的属性有一个 Get 访问器——你试过把类型转换器放在 Get 访问器上吗?

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

3. 您可以在用作值类型的类型上赋予类型级别的 TypeConverter。这将启用该类型的所有值的字符串转换。有关详细信息,请参阅 TypeConverters 和 XAML。

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

于 2010-08-27T15:25:11.397 回答