How do I change text color on the selected row inside a ListView/GridView? (using Expression Dark th

Posted by Thiado de Arruda on Stack Overflow See other posts from Stack Overflow or by Thiado de Arruda
Published on 2010-05-27T17:10:12Z Indexed on 2010/05/27 17:11 UTC
Read the original article Hit count: 179

Filed under:
|
|
|
|

I'm using theExpression Dark WPF Theme(http://wpfthemes.codeplex.com/) with a ListView(view property set to a GridView) to display some user data like the following :

<ListView
      Grid.Row="1"
      ItemsSource="{Binding RegisteredUsers}"
      SelectedItem="{Binding SelectedUser}"
      > 
      <ListView.View>
        <GridView>
          <GridViewColumn            
            Header="Login"
            DisplayMemberBinding="{Binding Login}"
            Width="60"/>
          <GridViewColumn
            Header="Full Name"
            DisplayMemberBinding="{Binding FullName}"
            Width="180"/>
          <GridViewColumn
            Header="Last logon"
            DisplayMemberBinding="{Binding LastLogon}"
            Width="120"/>
          <GridViewColumn
            Header="Photo"
            Width="50">
            <GridViewColumn.CellTemplate>
              <DataTemplate>
                <Image 
                  Source="{Binding Photo}" 
                  Width="30" 
                  Height="35"/>
              </DataTemplate>
            </GridViewColumn.CellTemplate>
          </GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>

The rows have white text with a dark background and white background when selected, however the text color doesnt change when selected and it makes very difficult to read, I would like the text to have a dark color when the row is selected. I have searched for a way to style the text color but with no success, here is the control template for the ListViewItem :

<Border SnapsToDevicePixels="true" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" x:Name="border">

            <Grid Margin="2,0,2,0">
              <Rectangle x:Name="Background" IsHitTestVisible="False" Opacity="0.25" Fill="{StaticResource NormalBrush}" RadiusX="1" RadiusY="1"/>
              <Rectangle x:Name="HoverRectangle" IsHitTestVisible="False" Opacity="0" Fill="{StaticResource NormalBrush}" RadiusX="1" RadiusY="1"/>
              <Rectangle x:Name="SelectedRectangle" IsHitTestVisible="False" Opacity="0" Fill="{StaticResource SelectedBackgroundBrush}" RadiusX="1" RadiusY="1"/>
              <GridViewRowPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />
            </Grid>

</Border>

The trigger that changes the background color simply applies an animation to change the 'SelectedRectangle' opacity, but I cant change the text color on the same trigger(I tried using a setter for the foreground color on the ListViewItem, but with no success).

Does someone have a clue on that?

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET