Вопрос

Я работаю над шаблонным элементом управления Silverlight (т.е. он происходит от Control и его внешний вид реализован как ControlTemplate в generic.xaml) и натолкнулся на необходимость создания ValueConverter в одной из моих привязок. Обычно я просто создаю экземпляр 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. Брайант Лайкс написал хорошую статью о разница между ValueConverter и TypeConverter в этом сценарии .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top