2009-09-09 76 views
1

我正在使用Silverlight模板化控件(即它从Control派生并将其外观实现为generic.xaml中的ControlTemplate),并且在我的一个绑定中遇到了需要ValueConverter的情况。通常我只是在控件的资源中创建一个ValueConverter实例,但我无法弄清楚如何使用ControlTemplate来实现这一点。如果可能,我想在Xaml中保留这个实现,但我想我可以重写OnApplyTemplate并手动创建与转换器的绑定。是否可以将Xaml资源包含在ControlTemplate中?

回答

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写了一篇好文章,讨论the difference between ValueConverter and TypeConverter in this scenario