以下触发器几乎按预期工作:
<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-row的对象上赋予propertychanged。
但是为什么DataTrigger没有被触发(我必须刷新视图才能看到效果)?
编辑:
我的问题是我现在没有提供PropertyChanged
的财产
有关数据网格的一些详细信息(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");
答案 0 :(得分:1)
最后它使用:
<DataTrigger Value="True" Binding="{Binding Path=Variants[0].InUse, Converter={StaticResource NotNullConverter}}">
<Setter Property="Foreground" Value="OrangeRed" />
</DataTrigger>
Project.Variants[0].OnPropertyChanged("InUse");
答案 1 :(得分:0)
尝试在样式中设置Foreground属性,以便在运行时动态更改
<Setter Property="Foreground" Value="White"/>
<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>