powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не работает DataTemplate для DataGrid в WPF
9 сообщений из 9, страница 1 из 1
Не работает DataTemplate для DataGrid в WPF
    #37183874
muscul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет

Парни возникла такая проблма использовал для раскраски строк в датаГриде в разные цвета в зависимости от значений в этих строках. Для этого использовал свойство датаГрида ItemContainerStyleSelector, которому присваивал экземпляр следующего класа с логикой выбора стиля расскраски
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class SS : StyleSelector
    {
        public override Style
            SelectStyle(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is DMQ)
            {
                DMQ q = item as DMQ;

                if (q.Volume != 0)
                        return element.FindResource("filledRow") as Style;
                else
                    return element.FindResource("emptyRow") as Style;

            }

            return null;
        }
    }
и Все отлично работало за исключением того что эти стили применялись только в момент создания элемента строки. если же поменять значение поля Volume в элементе c 0 на 1 то исходя из логики описанной выше шаблон должен изменится то этого не происходит. перерисовывается только если прокрутить скролл так что бы элемент выехал из пределов видимости и вернулся.
Решил что это из-за того что StyleSelector создан только для однократного применения.
Решил попробовать DataTemplateSelector который заточен как раз под изменение шаблона в зависимости от значений элементов.
сделал такой же класс только для шаблонов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class DTS : DataTemplateSelector
    {
        public override DataTemplate
            SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is DOMQuote)
            {
                DMQ q = item as DMQ;

                if (q.Volume != 0)
                    return element.FindResource("filledRow") as DataTemplate;
                else
                    return element.FindResource("emptyRow") as DataTemplate;
            }

            return null;
        }
    }
Тоесть класс практически идентичный сделан строго мсдн (кстати бесит что в МСДН все примеры делают с размещением логики в XAML - имхо это не правильно).
так вот переделал стили в ресурсаз в шаблоны. присвоил экземпляр этого класса полю dataGrid.ItemTemplateSelector (опять как пишут в мсдн). но ничего не обновляется. в отлидчике посмотерл метод SelectTemplate не вызывается....
и не могу найти нормального примера где ОБъявлением всего добра сделанно в CS а не в XAML разметке окна.
Подскажите в чем может быть дело? или как заставить стили отрабатывать не только при добавлении новой строки но и при изменении уже имеющихся.
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37185445
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по WPF есть отдельная ветка http://www.sql.ru/forum/actualtopics.aspx?bid=35
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37186039
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muscul,

DMQ это у вас что такое? Вью модель? Если да то заведите в ней проперти Foreground/Background и меняйте его как вам нужно.
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37186052
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
musculРешил попробовать DataTemplateSelector который заточен как раз под изменение шаблона в зависимости от значений элементов.

Бред какой-то. Поменялось значение проперти и изменился шаблон? DataTemplateSelector предназначено для подбора шаблона под разные классы (вью модели).
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37186595
muscul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DMQ это мой класса ObservableCollection<DMQ> - к этому списки прибиндин ItemSource от dataGrid не совсем понял насчет завести поля Background/foreground? как Грид поймет что из них надо брать цвета фона?
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37186713
muscul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе решил проблему вернулся к первоначальному классу но просто в самом стиле прописал тригер который выбирает цвет фона в зависимости от значения определенного поля. Хотя это конечно не совсем то решение которое искал так как у меня значения фона не дискретные а плавные. чем больше число тем темнее фон (0 должна быть на белом фоне а 1000 скажем практически на черном) - это мне че 100-1000 щаблонов создовать? наверняка есть человеческое решение

Модератор: Тема перенесена из форума "WinForms, .Net Framework".
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37187513
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
musculDMQ это мой класса ObservableCollection<DMQ> - к этому списки прибиндин ItemSource от dataGrid не совсем понял насчет завести поля Background/foreground? как Грид поймет что из них надо брать цвета фона?

Читайте про data binding.
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37189179
muscul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоесть хотите сказать что можно прибиндить поле класса к свойству стиля? если так то я обратно полюблю WPF ))
...
Рейтинг: 0 / 0
Не работает DataTemplate для DataGrid в WPF
    #37191055
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
musculТоесть хотите сказать что можно прибиндить поле класса к свойству стиля? если так то я обратно полюблю WPF ))

Любое свойство к любому свойству, будь то свойство контролса или вашего класса.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не работает DataTemplate для DataGrid в WPF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]