Как изменить цвет выделенной строки в devexpressgrid

Вопрос:Я новичок в сетке DevExpress. Мне нужно изменить цвет строки в сетке, когда выбрана строка. Может кто-то может отправить какой-то код для достижения вышеуказанного сценария. Спасибо заранее. Лучший ответ: Если бы я был вами, я бы изменил свойства GridView.Appearance.FocusedRow.BackColor и GridView.Appearance.SelectedRow.BackColor. Это заставит GridControl выбрать этот цвет, чтобы нарисовать фон выбранной строки. Ответ №1 Когда

Вопрос:

Я новичок в сетке DevExpress. Мне нужно изменить цвет строки в сетке, когда выбрана строка.

Может кто-то может отправить какой-то код для достижения вышеуказанного сценария.

Спасибо заранее.

Лучший ответ:

Если бы я был вами, я бы изменил свойства GridView.Appearance.FocusedRow.BackColor и GridView.Appearance.SelectedRow.BackColor. Это заставит GridControl выбрать этот цвет, чтобы нарисовать фон выбранной строки.

Ответ №1Содержание

  1. Когда игнорировать этот ответ
  2. В двух словах
  3. Это легко после добавления шаблона…
  4. XAML
  5. С#

Когда игнорировать этот ответ

Пожалуйста, проигнорируйте этот ответ в пользу сообщения от DevExpress, если вы хотите, чтобы все строки сетки были одинаковыми (кроме выбранной строки).

Если вы хотите динамически раскрасить строки сетки на основе некоторой переменной в ViewModel за каждой строкой, тогда этот ответ станет хорошим началом.

В двух словах

  • Добавить новый стиль в сетку.
  • Новый стиль переопределяет цвет по умолчанию для строки.
  • Новый стиль имеет DataTrigger, который окрашивает выделенную строку по-разному, когда она выбрана (путем мониторинга SelectionState).

Это легко после добавления шаблона…

Не откладывайте объем кода. После добавления плиты котла новая цветовая схема применяется, добавляя ее в любую сетку вашего проекта:

RowStyle=»{StaticResource CustomRowStyle}»

XAML

Добавьте этот стиль:

<Style x:Key=»CustomRowStyle» TargetType=»{x:Type grid:GridRowContent}» BasedOn=»{StaticResource {dxgt:GridRowThemeKey ResourceKey=RowStyle}}»> <Setter Property=»Foreground» Value=»{StaticResource DoneForegroundBrush}» /> <Setter Property=»Background» Value=»{StaticResource DoneBackgroundBrush}» /> <Style.Triggers> <DataTrigger Binding=»{Binding Path=SelectionState, Converter={StaticResource TrueIfSelectedOrFocused}}» Value=»True»> <Setter Property=»Foreground» Value=»{StaticResource SelectedForegroundBrush}» /> <Setter Property=»Background» Value=»{StaticResource SelectedDoneBackgroundBrush}» /> </DataTrigger> </Style.Triggers> </Style>

Добавьте эти цвета:

<SolidColorBrush x:Key=»DoneForegroundBrush» Color=»#FF00D000″></SolidColorBrush> <SolidColorBrush x:Key=»DoneBackgroundBrush» Color=»#20263900″></SolidColorBrush> <SolidColorBrush x:Key=»SelectedForegroundBrush» Color=»White»></SolidColorBrush> <SolidColorBrush x:Key=»SelectedDoneBackgroundBrush» Color=»DarkGreen» Opacity=»0.5″></SolidColorBrush>

Затем добавьте этот стиль в свою сетку, используя свойство RowStyle:

<grid:GridControl ItemsSource=»{Binding Items}» SelectedItem=»{Binding ItemSelected, Mode=TwoWay}» AutoGenerateColumns=»None» SelectionMode=»Row»> <grid:GridControl.View> <grid:TableView VerticalScrollbarVisibility=»Auto» AutoWidth=»True» NavigationStyle=»Row» DetailHeaderContent=»Orders» ShowGroupPanel=»False» ShowColumnHeaders=»True» FadeSelectionOnLostFocus=»False» ShowIndicator=»False» UseLightweightTemplates=»None» RowStyle=»{StaticResource CustomRowStyle}»> </grid:TableView> </grid:GridControl.View> <grid:GridControl.Columns> <!— Column definitions here. —> </grid:GridControl.Columns> </grid:GridControl>

С#

Наконец, используйте этот конвертер, который необходим, чтобы покрасить строку по-разному, если она выбрана или сфокусирована:

namespace Converters { public class TrueIfSelectedOrFocused : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { try { switch ((SelectionState)value) { case SelectionState.Selected: case SelectionState.Focused: case SelectionState.FocusedAndSelected: return true; case SelectionState.None: return false; default: return false; } } catch (Exception ex) { // Log error here. } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return Binding.DoNothing; } #endregion } }

Чтобы подключить этот преобразователь, нам нужно добавить стандартный код котельной:

<converters:TrueIfSelectedOrFocused x:Key=»TrueIfSelectedOrFocused» />

и в заголовке:

xmlns:converters=»clr-namespace:Converters»

Оцените статью
Добавить комментарий