2009-09-09 5 views
1

Я работаю над шаблоном управления Silverlight (т. Е. Он происходит от Control и имеет свой внешний вид, реализованный как ControlTemplate в generic.xaml), и столкнулся с необходимостью ValueConverter в одном из моих привязок. Обычно я просто создаю экземпляр ValueConverter в Ресурсах управляющего элемента управления, но я не могу понять, как это сделать с помощью ControlTemplate. Я хотел бы сохранить эту реализацию в Xaml, если возможно, но я полагаю, что могу переопределить OnApplyTemplate и вручную создать привязку с конвертером.Можно ли включать Xaml resouces в 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. Брайант Likes написал хорошую статью, обсуждая the difference between ValueConverter and TypeConverter in this scenario.

Смежные вопросы