1

我正在开发一个 Silverlight 模板化控件(即它派生自 Control,并且它的外观在 generic.xaml 中实现为 ControlTemplate),并且在我的一个绑定中遇到了对 ValueConverter 的需求。通常我只会在使用的控件的资源中创建一个 ValueConverter 的实例,但我不知道如何使用 ControlTemplate 来做到这一点。如果可能,我想将此实现全部保留在 Xaml 中,但我想我可以覆盖 OnApplyTemplate 并使用转换器手动创建绑定。

4

1 回答 1

3

这在 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 之间的区别

于 2009-09-09T15:36:19.940 回答