2009-10-05 10 views
7

Ho un controllo utente che applica un pulsante stile a, con lo stile contenente una sezione ControlTemplate. All'interno di ControlTemplate, ci sono vari elementi dell'interfaccia utente come Ellisse e Path.WPF imposta gli elementi di stile con nome dal codice sottostante?

Se conferisco a quegli elementi - l'Ellisse e il percorso - un nome con x: Nome, posso accedervi dal codice sottostante?

Sembra che Ellipse e Percorso dello stile non siano visibili perché ottengo un errore di compilazione (C#).

Sto andando su questo nel modo sbagliato?

risposta

18

Poiché un modello può essere istanziato più volte, non è possibile associare un membro generato tramite x:Name. Invece, devi trovare l'elemento con nome all'interno del modello applicato a un controllo.

Dato XAML semplificata:

<ControlTemplate x:Key="MyTemplate"> 
    <Ellipse x:Name="MyEllipse" /> 
</ControlTemplate> 

Si potrebbe fare qualcosa di simile:

var template = (ControlTemplate)FindResource("MyTemplate"); 

template.FindName("MyEllipse", myControl); 

O ancora più semplicemente:

var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl); 

Si può leggere su FrameworkTemplate.FindName.

Alcuni esempi e discussioni here, here e here.

+0

Perfetto, grazie mille! – MattJ

+11

Se è perfetto, contrassegnalo come risposta. – Vaccano

Problemi correlati