【问题标题】:Is it possible to include Xaml resources in a ControlTemplate?是否可以在 ControlTemplate 中包含 Xaml 资源?
【发布时间】:2009-09-09 15:24:17
【问题描述】:
我正在开发一个 Silverlight 模板化控件(即,它派生自 Control,并且其外观在 generic.xaml 中实现为 ControlTemplate),并且在我的一个绑定中遇到了对 ValueConverter 的需求。通常我只会在使用的控件的资源中创建一个 ValueConverter 的实例,但我不知道如何使用 ControlTemplate 来做到这一点。如果可能,我想将此实现全部保留在 Xaml 中,但我想我可以覆盖 OnApplyTemplate 并使用转换器手动创建绑定。
【问题讨论】:
标签:
silverlight
xaml
resources
controltemplate
【解决方案1】:
这在 Silverlight 3 中确实有效。您只需在控件模板中添加一个资源部分,并将 ValueConverter 添加到模板的资源中:
<ControlTemplate TargetType="controls:MyControl">
<Grid Margin="8,40,8,20" x:Name="peopleListContainer">
<Grid.Resources>
<controls:MyValueConverter x:Key="converter" />
</Grid.Resources>
<!-- ....
然而,ValueConverters 经常在控制模板中被误用。您可能想改用 TypeConverter。 Bryant Likes 写了一篇很好的文章讨论the difference between ValueConverter and TypeConverter in this scenario。