2010-04-20 14 views

risposta

4

un po 'somthing come questo ..... (btw, questo XAML è WPF, non silverlight-- che è leggermente diverso)

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

ora, una volta che si applica questo stile a un oggetto, ogni volta che si imposta lo sfondo di tale oggetto, il modello utilizzerà la proprietà background (questo è una proprietà sul controllo del pulsante) e verrà impostato come predefinito nello stile (in questo caso, verde)

Se si desidera utilizzare una proprietà che non esiste sull'oggetto del proprio stile, è necessario per ottenere il controllo personale e aggiungere la proprietà come DependencyProperty o utilizzare l'interfaccia INotifyPropertyChanged. Here è una spiegazione decente per te.

+1

è tutto quello che c'è da fare? se voglio creare il mio basta usare un setter con un nome univoco? – Peter

+0

la proprietà deve esistere sull'oggetto, come proprietà DependencyProperty o come proprietà INotifyPropertyChanged. In questo caso, Background è una proprietà di base della maggior parte dei controlli. –

3

Serve un po 'più di informazioni su ciò che si sta tentando di fare. La creazione di un TemplateBinding può essere fatto con il seguente XAML:

{TemplateBinding YourProperty} o

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

+1

dove posso creare l'origine di questa associazione e il valore predefinito? – Peter

Problemi correlati