2010-04-20 7 views

Odpowiedz

4

trochę somthing tak ..... (btw, to jest WPF XAML, nie silverlight-- który jest nieco inny)

<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> 

teraz, gdy stosuje się ten styl do obiektu, ilekroć ustawić tło tego obiektu, szablon będzie użyć właściwości tła (w tym to właściwość w sterowaniu przyciskami) i będzie domyślnie ustawiona w stylu (w tym przypadku na zielony)

Jeśli chcesz użyć właściwości, która nie jest dostępna dla obiektu twojego stylu, masz aby uzyskać własną kontrolę i dodać właściwość jako DependencyProperty lub użyć interfejsu INotifyPropertyChanged. Here to przyzwoite wytłumaczenie dla ciebie.

+1

czy to wszystko? jeśli chcę tworzyć własne, wystarczy użyć setera o unikalnej nazwie? – Peter

+0

właściwość musi istnieć na obiekcie, jako właściwość DependencyProperty lub jako właściwość INotifyPropertyChanged. W tym przypadku Tło jest podstawową właściwością większości kontrolek. –

3

Potrzebujesz więcej informacji o tym, co próbujesz zrobić. Konfigurowanie TemplateBinding można zrobić z poniższym XAML:

{TemplateBinding YourProperty} lub

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

+1

gdzie mogę utworzyć źródło tego powiązania i wartość domyślną? – Peter