美好的一天,
我有一个带有黑色背景的TextBlock元素和带有黑色前景色的文本。在任务完成之前,我不希望我的用户看到文本。然后文本将变成绿色。
我在xaml中的样式触发器如下:
<Style x:Key="DataImportCompletedStyle" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#FF000000" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsImportCompleted}" Value="True">
<Setter Property="Foreground" Value="#FF99F999" />
</DataTrigger>
</Style.Triggers>
</Style>
我的TextBlock看起来像:
<TextBlock x:Name="ImportStatusMesage"
Grid.Row="3"
Margin="5,0,5,10"
Background="Black"
FontSize="18"
Foreground="#FF000000"
Style="{StaticResource DataImportCompletedStyle}"
Text="Data Import Completed" />
我的IsImportCompleted布尔属性的代码是:
private bool isImportCompleted;
public bool IsImportCompleted
{
get { return isImportCompleted; }
set
{
isImportCompleted = value;
System.Diagnostics.Debug.WriteLine("Import Process Completed...OnPropertyChanged");
OnPropertyChanged("IsImportCompleted");
}
}
确实实现了INotifyPropertyChanged。任务正常并更新IsImportCompleted属性,因为我在“输出”窗口中看到了我的消息,但文本没有改变颜色。
我认为通过使用INotifyProperty,UI会自行更新。
我正在使用Snoop并验证IsImportCompleted设置为true。但仍然没有文字颜色变化。
任何建议,
TIA,
COSON
答案 0 :(得分:2)
我引用了Asker的评论。据他说,这解决了他的问题
没关系,我明白了。我在我的XAML中设置Foreground属性,它将始终覆盖我根据优先级规则在触发器中设置的属性。在我的TextBlock
标记中取出Foreground属性定义后,一切正常!