Silverlight 4 Datagrid, Set RowBackground - PullRequest
0 голосов
/ 03 июня 2011

Я знаю, что сетка данных не предназначена для прямого доступа к каждой строке. Моя проблема в том, что мне нужно выделять строки в зависимости от определенных условий, а не только во время загрузки. После загрузки сетки могут произойти изменения в коллекции, которая не является коллекцией, из которой заполняется сетка, поэтому изменения в этой коллекции, очевидно, не повлияют на сетку.

Пример диаграммы данных:

[GridCollection]             [SecondaryCollection]
{ID = 0, Name = "Test A"}    {ID = 0, GridCollectionID = 0, Name = "Test A Linked"}
{ID = 1, Name = "Test B"}    

Таким образом, в этом случае элемент GridCollection 0 будет выделен в сетке. Но если я добавлю другой элемент в коллекцию SecondaryCollection, этот элемент будет выделен в сетке.

Теперь я могу принудительно обновить ресурс ItemsSource, но это выглядит странно. У кого-нибудь есть идеи, как подойти к этому вопросу?

1 Ответ

1 голос
/ 03 июня 2011

Этого было бы действительно легко достичь, используя Prism's EventAggregator :

  1. Убедитесь, что элементы в GridCollection реализуют INotifyPropertyChanged
  2. Добавьте логическое свойство IsHighlight к классу элементов в GridCollection
  3. Когда элемент добавляется в SecondaryCollection, инициируйте событие, используя агрегатор событий, используя GridCollectionID в качестве полезной нагрузки.
  4. Подписаться на это событиена GridCollection и установите IsHighlight в true.
  5. В DataGrid установите свой условный формат на включенный, когда IsHighlight равен true.

Эта методология отделена и надежна, и она позволяет вам сделатьподсветка выглядит так, как вы хотите, и может изменяться в любое время, даже с использованием анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...