Подсветка строк с одинаковыми данными в WPF DataGrid

146
30 января 2020, 18:30

На форме есть таблица с данными, выбиратель цвета, кнопка.

  1. Выбираю нужную строку
  2. Выбираю цвет
  3. Нажимаю кнопку "Подсветить"
  4. Выделяются все строки, которые содержат аналогичную информацию (но строки не 100% идентичны)
  5. Выбираю другую строку
  6. Выбираю другой цвет...

Не могу придумать как это сделать. Есть идеи?

Кажется, что копать нужно сюда:

    <DataTrigger Binding="{Binding Status}" Value="{x:Static loc:Resources.StateOld}">
      <Setter Property="Background">
        <Setter.Value>
          <Binding Path="SensorName" Converter="{StaticResource RowBackgroundConverter}"/>
        </Setter.Value>
      </Setter>
   </DataTrigger>

Но не совсем понятно, как привязаться к нескольким свойствам (колонкам). Нужно сравнивать как минимум по трем свойствам.

Самый простой путь, который придумал - это добавить свойство Color объектам, которые выводятся в таблицу. По кнопке менять им это свойство. Но хочется без этого.

Answer 1

Сделал пока так, введя новое свойство объекту - RowColor. Наверно очень не оптимально с циклом. Но делать нужно...(

if (EventsDataGrid.SelectedItem is Event selectedEvent)
{
    foreach (EventForReport item in viewSource.View)
    {
       bool equal = selectedEvent.DeviceName == item.DeviceName &&
                    selectedEvent.Ip == item.Ip &&
                    selectedEvent.SensorName == item.SensorName &&
                    selectedEvent.SensorValueText == item.SensorValueText;
        if (equal)
        {
            item.RowColor = Brushes.Yellow;
        }
    }
}               
viewSource.View.Refresh();    
READ ALSO
Visual studio не видит добавленных библиотек

Visual studio не видит добавленных библиотек

Сейчас делаю проект на UnityВ Visual Studio 2017 пишу код для него

315
Как вычислить проценты в C#

Как вычислить проценты в C#

Предоставляю код, который вычисляет проценты, со всем остальным проблем нетДля примера, вводимое число 500, проценты - 50

686
Почему при использовании IIS необходим SSL сертификат, а на IIS Express нет?

Почему при использовании IIS необходим SSL сертификат, а на IIS Express нет?

Есть ASPNet Core API №1(для проксирования внешних запросов на внутренние сервисы) и ASP

162
Считывается только часть ячеек excel interop, остальные null

Считывается только часть ячеек excel interop, остальные null

При попытке считать все ячейки документа Excel с помощью библиотеки Interop, часть ячеек считывается корректно, часть(большая) не считывается вовсе,...

150