2014-11-20 14 views
6

Ho un DataGrid WPF in cui l'oggetto SelectedItem è associato a una proprietà ViewModel.WPF DataGrid: evidenzia la riga selezionata anche quando SelectedItem è una proprietà associata

SelectedItem="{Binding DataContext.SelectedBooking, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 

Se un utente fa clic su una riga, selezionandola, l'unico indizio visivo è che lo sfondo grigio della riga diventa molto leggermente più leggero. Ho bisogno di fare questo più evidente, così ho provato ad aggiungere questi, singolarmente:

<DataGrid.RowStyle> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Foreground" Value="Red"/> 
       <Setter Property="Background" Value="Red" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.RowStyle> 

E

<DataGrid.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/> 
</DataGrid.Resources> 

Il risultato è lo stesso. Quando un utente fa clic su una riga, lampeggia brevemente in rosso e poi torna in grigio chiaro, sebbene la riga rimanga effettivamente come selezionata. Se cliccano su di esso una seconda volta, diventa rosso e rimane rosso.

Se rimuovo il binding su SelectedItem, funziona come previsto. Come posso farlo funzionare a prescindere dal Binding?

risposta

7

Ho trovato la risposta da solo, scorrendo l'Intellisense per SystemColors. C'è un pennello InactiveSelection che puoi sovrascrivere.

<DataGrid.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/> 
    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Red"/> 
</DataGrid.Resources> 
+1

Un piccolo hack divertenti qui che si può fare è anche: ' 'Questo farà in modo che l'inattivo sia impostato su attivo, indipendentemente dall'impostazione predefinita o che debba modificare il tasto di evidenziazione. –

+0

InactiveSelectionHighlightBrushKey funziona solo con FW 4.5 e genera un'eccezione con FW 4.0. Si prega di controllare http://stackoverflow.com/a/13827971/1815957 – diedie2

Problemi correlati