Можно ли включить ресурсы Xaml в ControlTemplate? - PullRequest
1 голос
/ 09 сентября 2009

Я работаю над шаблонным элементом управления Silverlight (т.е. он происходит от Control и его внешний вид реализован как ControlTemplate в generic.xaml) и натолкнулся на необходимость создания ValueConverter в одной из моих привязок. Обычно я просто создаю экземпляр ValueConverter в ресурсах элемента управления, с которым я работаю, но я не могу понять, как это сделать с помощью ControlTemplate. Я хотел бы сохранить эту реализацию все в Xaml, если это возможно, но я полагаю, я мог бы переопределить OnApplyTemplate и вручную создать привязку с конвертером.

1 Ответ

3 голосов
/ 09 сентября 2009

Это работает в 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. Брайант Лайкс написал хорошую статью, в которой обсуждается разница между ValueConverter и TypeConverter в этом сценарии .

...