2012-03-08 7 views
9

Quiero cambiar el aspecto del borde del elemento seleccionado en la imagen vinculada a continuación.Diseñar un ListViewItem seleccionado en Windows 8 CP

enter image description here

ya he estado buscando en msdn.com y en internet, pero no he encontrado nada útil.

¿Cómo puedo hacer esto?

+0

¿Está utilizando WPF o una aplicación Metro XAML? Son marcos completamente separados, pero etiquetó esto con ambos. –

+0

Estoy usando una aplicación Metro XAML. – t4nky

Respuesta

16

La apariencia de selección es parte de ControlTemplate para ListViewItem. Para modificar la plantilla de ListView completo, use ItemContainerStyle para aplicar un Estilo a cada elemento, que puede contener una versión modificada de la plantilla.

<ListView> 
    <ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
      ... 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </ListView.ItemContainerStyle> 
</ListView> 

La plantilla predeterminada para ListViewItem es bastante compleja por lo que con el fin de preservar la mayor cantidad del comportamiento predeterminado como sea posible y le dará un buen punto de partida, es más fácil de usar Blend para crear una copia para ti.

En Blend, haga clic en el ListView y seleccione:

editar plantillas adicionales -> Editar generada artículo Container -> Editar una copia ...

y se creará un estilo para usted en el formulario anterior con la plantilla predeterminada completada. El aspecto de la selección utiliza algunos elementos diferentes en la plantilla que puede querer modificar; estos se pueden ver seleccionando el estado Seleccionado en el panel Estados en Mezcla y perforando en los elementos resaltados en el panel Objetos.

+0

Gracias, esto era exactamente lo que estaba buscando. Me olvido de que tengo Blend for Visual Studio para ayudar con esto. –

2

He encontrado otra solución que podría ser útil para otros: anular recursos de pincel específicos en App.xaml. Funciona sin clonar cualquier estilo por defecto, y es tan simple como:

<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="myColor1"/> 
<SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="myColor2"/> 

Por supuesto, hay más arbustos que pueden ser anulado, y una lista de ellos se puede encontrar aquí: ListViewItem styles and templates.

Tenga en cuenta que este enfoque cambia la apariencia de TODOS ListViews en la aplicación.