2011-06-11 19 views
6

Mi situación es como seguir.En WPF, ¿hay alguna manera de combinar dos estilos para un control?

Tengo un App.xaml que incluye Estilo de ListView así:

<Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       ... 

Sin embargo, quiero añadir algunos estilos en otro xaml, digamos que en Window.xaml así:

<ListView AlternationCount="2" Background="#FFECECEC"> 
    <ListView.Resources> 
     <Style x:Key="{x:Type ListViewItem}" TargetType="{x:Type ListViewItem}"> 
      <EventSetter Event="PreviewMouseDoubleClick" Handler="OnPreviewMouseDoubleClick" /> 
     </Style> 
    </ListView.Resources> 
</ListView> 

Entonces, lo que quiero hacer es definir el estilo para el diseño base en App.xaml como estilo predeterminado. A continuación, agregue algunos cambios, como agregar un menú contextual y agregar eventos de cada xaml.

Pero, con la implementación anterior, el Estilo definido en App.xaml se sobrescribirá por Estilo definido en Window.xaml.

¿Hay alguna manera de resolver el problema y lograrlo?

+0

Lea la descripción de la etiqueta [coding-style] (http://stackoverflow.com/tags/coding-style/info) y tome las medidas adecuadas. ¡Gracias! –

Respuesta

9

estilos tienen un BasedOn propiedad:

<Style x:Key="Style1"> 
... 
</Style> 

<Style x:Key="Style2" BasedOn="{StaticResource Style1}"> 
... 
</Style> 

BTW: <Style x:Key="{x:Type ListViewItem}" parece un poco raro. El x:Key debe ser una clave única en un diccionario xaml, generalmente una cadena.

+0

Muchas gracias por su respuesta rápida. Oh, eso es verdad x: Key es extraño, también. Muchas gracias. :) – Aki24x

Cuestiones relacionadas