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?
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. –
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