2010-11-17 4 views
0

J'ai un DataGrid Silverlight et je n'arrive pas à comprendre comment le styler. Lorsque l'utilisateur passe la souris sur une ligne, la couleur d'arrière-plan appliquée à la ligne (par défaut) ne correspond pas bien au reste de l'interface utilisateur. Je veux changer cette couleur de fond en vol stationnaire. Comment fait-on ça?Comment changer la couleur de fond OnHover de la rangée DataGrid?

Répondre

1

Vous devez affecter un style DataGridRow à DataGrid.RowStyle qui modifie l'animation de VisualState pour MouseOver. Les styles par défaut pour DataGrid peuvent être trouvés here.

Dans le style de DataGridRow vous voulez changer ceci:

<Rectangle x:Name="BackgroundRectangle" Grid.RowSpan="2" Grid.ColumnSpan="2" Opacity="0" Fill="#FFBADDE9"/> 

Ce rectangle est opaque, mais est rendu visible de la souris. Changer le remplissage changera la couleur d'arrière-plan sur la souris.

+0

Merci beaucoup! Je cherchais ce style par défaut XAML. Parfois, les documents MSDN m'aggravent vraiment; les choses sont trop difficiles à trouver là-bas! –

+0

Stephan, j'ai un autre problème que je pense est lié. Pour une raison quelconque, la cellule/colonne sur laquelle vous avez cliqué obtient une couleur d'arrière-plan plus claire que les autres cellules de la ligne. Comment puis-je changer cela? Je voudrais que la ligne entière soit toujours la même couleur de fond. Il semble que l'opacité soit légèrement augmentée sur la cellule sur laquelle on a cliqué, ce qui donne une couleur légèrement plus claire. –

+0

Vous devez faire exactement la même chose avec le style de cellule. Le style de cellule par défaut (même lien) a un élément, nom 'FocusVisual', qui est défini sur non opaque lorsque la cellule est sélectionnée. Supprimer cet élément et l'animation et il va l'empêcher de changer le look. – Stephan

Questions connexes