Пользовательский элемент управления WPF TemplateBinding - PullRequest
5 голосов
/ 20 апреля 2010

Как мне определить TemplateBinding для моего пользовательского элемента управления?

Ответы [ 2 ]

4 голосов
/ 20 апреля 2010

что-то вроде этого ..... (кстати, этот xaml - это WPF, а не silverlight - что немного отличается)

   <style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Green">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid Background={TemplateBinding Background}
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </style>

Теперь, когда вы применяете этот стиль к объекту, всякий раз, когда вы устанавливаете фон этого объекта, шаблон будет использовать свойство Background (это свойство элемента управления кнопки) и будет по умолчанию соответствовать тому, что вы установили в стиль (в данном случае зеленый)

Если вы хотите использовать свойство, которого нет в объекте вашего стиля, вы должны получить собственный элемент управления и добавить это свойство либо как DependencyProperty , либо использовать INotifyPropertyChanged интерфейс. Здесь - достойное объяснение для вас.

3 голосов
/ 20 апреля 2010

Нужно немного больше информации о том, что вы пытаетесь сделать. Настройка TemplateBinding может быть выполнена с помощью следующего XAML:

{TemplateBinding YourProperty} или

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=YourProperty}

...