Добрый день.
Есть такой-вот незатейливый стиль:
<Style TargetType="{x:Type DataGridRow}" x:Key="ForDocs">
<Setter Property="Background" Value="{Binding Converter={StaticResource Document2Color}}" />
</Style>
Document2Color определяет, в каком состоянии находятся документы по проекту (просрочены, сданы, не просрочены) и окрашивает строку в соответствующий цвет.
В деталях таблицы, собственно список самих документов.
Вопрос номер один: когда я изменяю даты документов и по логике строка должна сменить цвет на зеленый (все сдано), то конвертер не хочет пересчитывать цвет строки. Как его "пнуть", чтобы он понял, что данные поменялись и надо бы снова отработать. (OnPropertyChanged отсылал уже по всякому, не помогает)
Вопрос номер два: если я покрашу строку в какой-то цвет, то этот же цвет распространяется на всю область RowDetailed. Это как-то лечится?
Спасибо.
Здравствуйте, MAMOHT, Вы писали:
MAM>MAM><Style TargetType="{x:Type DataGridRow}" x:Key="ForDocs">
MAM> <Setter Property="Background" Value="{Binding Converter={StaticResource Document2Color}}" />
MAM></Style>
MAM>
MAM>Document2Color определяет, в каком состоянии находятся документы по проекту (просрочены, сданы, не просрочены) и окрашивает строку в соответствующий цвет.
MAM>В деталях таблицы, собственно список самих документов.
MAM>Вопрос номер один: когда я изменяю даты документов и по логике строка должна сменить цвет на зеленый (все сдано), то конвертер не хочет пересчитывать цвет строки. Как его "пнуть", чтобы он понял, что данные поменялись и надо бы снова отработать. (OnPropertyChanged отсылал уже по всякому, не помогает)
WPF должен как-то узнать что изменились свойства используемые конвертером. Более правильно иметь свойство которое описывает состояние. тогда, binding будет выглядеть так:
<Setter Property="Background" Value="{Binding Path=DocumentState,Converter={StaticResource DocumentState2Color}}" />
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, MAMOHT, Вы писали:
MAM>>MAM>><Style TargetType="{x:Type DataGridRow}" x:Key="ForDocs">
MAM>> <Setter Property="Background" Value="{Binding Converter={StaticResource Document2Color}}" />
MAM>></Style>
MAM>>
TK>WPF должен как-то узнать что изменились свойства используемые конвертером. Более правильно иметь свойство которое описывает состояние. тогда, binding будет выглядеть так:
TK><Setter Property="Background" Value="{Binding Path=DocumentState,Converter={StaticResource DocumentState2Color}}" />
Проблема была в том, что хотел обрабатывать ВЕСЬ объект, анализируя в конвертере несколько его свойств.
Объединение этих свойств в одно поле-enum-статус решило проблему.
Спасибо за подсказку.