是否可以在WPF中为静态资源提供类型转换器?

Not*_*tre 12 wpf converter staticresource

我有一个新手WPF问题.

想象一下,我的用户控件有一个名称空间声明,如下所示:

xmlns:system="clr-namespace:System;assembly=mscorlib"
Run Code Online (Sandbox Code Playgroud)

我有这样的用户控制资源:

<UserControl.Resources>
    <system:Int32 x:Key="Today">32</system:Int32>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

然后在我的用户控件的某处我有这个:

<TextBlock Text="{StaticResource Today}"/>
Run Code Online (Sandbox Code Playgroud)

这将导致错误,因为它Today被定义为整数资源,但Text属性需要一个字符串.这个例子是人为的,但希望能说明这个问题.

问题是,如果我的资源类型与属性类型完全匹配,我有没有办法为我的资源提供转换器?类似于IValueConverter的绑定或类型转换器.

谢谢!

Abe*_*cht 24

如果使用绑定,则可以使用.这看起来有点奇怪,但这实际上会起作用:

<TextBlock Text="{Binding Source={StaticResource Today}}" />
Run Code Online (Sandbox Code Playgroud)

这是因为Binding引擎具有基本类型的内置类型转换.此外,通过使用Binding,如果不存在内置转换器,您可以指定自己的转换器.