是否可以在ControlTemplate中包含Xaml资源?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在ControlTemplate中包含Xaml资源?相关的知识,希望对你有一定的参考价值。

我正在研究一个Silverlight模板控件(即它派生自Control并将其外观实现为generic.xaml中的ControlTemplate),并且在我的一个绑定中遇到了对ValueConverter的需求。通常我只是在控件的Resources中创建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。科比喜欢写了一篇讨论the difference between ValueConverter and TypeConverter in this scenario的好文章。

以上是关于是否可以在ControlTemplate中包含Xaml资源?的主要内容,如果未能解决你的问题,请参考以下文章

python中包含UTF-8编码中文的列表或字典的输出

是否可以在另一个中包含一个 CSS 文件?

是否可以在对象模式中包含不同的键?

是否可以在同一个项目中包含 PolarSSL 和 OpenSSL?

是否可以在引号中包含引号?

是否可以在 IBM MFP 的一个文件中包含所有适配器配置