Следующие триггеры работают почти как ожидалось:Почему DataTrigger не работает после PropertyChanged?
<Style.Triggers>
<Trigger Value="True" Property="IsSelected">
<Setter Property="Foreground" Value="White" />
</Trigger>
<DataTrigger Value="True" Binding="{Binding UpdateSourceTrigger=PropertyChanged, Converter={StaticResource InUseConverter}}">
<Setter Property="Foreground" Value="OrangeRed" />
</DataTrigger>
</Style.Triggers>
После загрузки вид, цвета правильно.
Затем я выполняю async taks en, когда он закончил. Я даю свойство, измененное на объекте, имеющем привязку к моей строке datagrid.
Но почему DataTrigger не уволен (мне нужно обновить представление, чтобы увидеть эффект)?
EDIT:
Моя проблема в том, что я не сейчас, какое имущество я должен предоставить PropertyChanged
.
Некоторые подробности о DataGrid (Projects
является ObservableCollection
):
DataGrid SelectedItem="{Binding Project}" ItemsSource="{Binding Projects}">
Свойство объекта Project
, что привязка должна использовать это:
Project.Variants[0].InUse
Я попробовал также спусковые:
<DataTrigger Value="True" Binding="{Binding Path=Variants[0].InUse, Converter={StaticResource NotNullConverter}}">
<DataTrigger Value="True" Binding="{Binding Path=., Converter={StaticResource InUseConverter}}">
С моделью, которую я пробовал после Project.Variants[0].InUse = null;
:
Project.OnPropertyChanged("InUse");
Project.Variants[0].OnPropertyChanged("InUse");
raisePropertyChanged("Project.Variants[0].InUse");
raisePropertyChanged("Variants[0].InUse");
raisePropertyChanged("Projects");
raisePropertyChanged("Project");
raisePropertyChanged("InUse");
'UpdateSourceTrigger' для когда вы хотите передать значение из представления для просмотра модели. В этом случае вы хотите получить значение и для этого, чтобы это произошло автоматически, вашему классу необходимо реализовать интерфейс INotifyPropertyChanged. Имеет ли это? – dkozl
{Путь привязки =. UpdateSourceTrigger = PropertyChanged, Converter = {StaticResource InUseConverter}} –
@Gerard в любом случае в вашем случае вы не укажете 'Path', чтобы он не запускался при каких-либо конкретных изменениях свойств из вашей модели представления. Вы используете несколько свойств из своей модели просмотра в этом конвертере? Может быть, стоит изменить это на «MultiBinding». – dkozl