是否可以在ControlTemplate中包含Xaml资源?
-
05-07-2019 - |
题
我正在研究一个Silverlight模板化控件(即它派生自Control并将其外观实现为generic.xaml中的ControlTemplate),并且在我的一个绑定中遇到了对ValueConverter的需求。通常我只是在控件的资源中创建一个ValueConverter的实例,但我无法弄清楚如何使用ControlTemplate来实现。如果可能的话,我想在Xaml中保留这个实现,但我想我可以覆盖OnApplyTemplate并手动创建与转换器的绑定。
解决方案
这在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撰写了一篇很好的文章,讨论了在这种情况下,ValueConverter和TypeConverter之间的区别。
不隶属于 StackOverflow