2010-01-09 5 views
14

Estoy trabajando en un proyecto WPF donde he anulado el control CheckBox para algunas operaciones especiales. Eso está funcionando correctamente.Cómo heredar una plantilla de control

Mi problema es que el ControlTemplate que se aplicó desde el tema (shinyred.xaml desde codeplex), no se aplica a mi control sobreimpulso. ¿Hay alguna forma de heredar el CheckBoxControlTemplate para que lo use mi nuevo control?

Todas las muestras que puedo encontrar se centran en heredar el estilo para el CheckBox, pero nada sobre el ControlTemplate.

Respuesta

17

No, como dijiste, es posible 'heredar' un estilo usando la propiedad BasedOn, pero no es posible 'heredar' una plantilla directamente. Sin embargo, esto es comprensible, ¿cuál sería la semántica de la herencia de la plantilla? ¿Cómo podría la plantilla derivada ser capaz de agregar o cambiar elementos de alguna manera en la plantilla base?

Con estilos Es muy posible, ya que sólo tiene que añadir Setters, Triggers, etc. Lo único que concebiblemente ser posible con la herencia de plantillas es la adición de Triggers a la plantilla base. Sin embargo, en ese caso, debe tener un conocimiento profundo de los nombres de los elementos en la plantilla base, y un cambio de nombre de elemento en la plantilla base podría romper su derivada. Sin mencionar un problema con la legibilidad, donde se refiere a un nombre en su plantilla derivada, que se define en otro lugar completamente.

Adición tardía Habiendo dicho todo eso, es posible resolver su problema en particular (aunque dudo que todavía sea suyo, o incluso un problema). Simplemente defina un estilo para su control con un ajustador para la propiedad Template así:

<Style TargetType="<your type>"> 
    <Setter Property="Template" Value="{StaticResource <existing template resource name>}"/> 
</Style> 
Cuestiones relacionadas