WPF样式触发器不工作?
你好 我有一个黑色背景的TextBlock元素和一个黑色前景色的文本。我不希望我的用户在任务完成之前看到文本。然后文本将变成绿色 xaml中的样式触发器如下所示:WPF样式触发器不工作?,wpf,Wpf,你好 我有一个黑色背景的TextBlock元素和一个黑色前景色的文本。我不希望我的用户在任务完成之前看到文本。然后文本将变成绿色 xaml中的样式触发器如下所示: <Style x:Key="DataImportCompletedStyle" TargetType="{x:Type TextBlock}"> <Setter Property="Foreground" Value="#FF000000" /> <Style.Tr
<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 x:Name="ImportStatusMesage"
Grid.Row="3"
Margin="5,0,5,10"
Background="Black"
FontSize="18"
Foreground="#FF000000"
Style="{StaticResource DataImportCompletedStyle}"
Text="Data Import Completed" />
它实现了INotifyPropertyChanged。当我在输出窗口中看到我的消息时,该任务工作正常,并更新IsImportCompleted属性,但文本不会改变颜色
我认为通过使用INotifyProperty,用户界面会自我更新
我正在使用Snoop并验证IsImportCompleted设置为true。但仍然没有文本颜色变化
任何建议
蒂亚
科森我引用了询问者的评论。据他说,这解决了他的问题
没关系,我知道了。我正在我的XAML中设置前台属性,它将根据优先级规则覆盖我在触发器中设置的内容。一旦我在我的
TextBlock
标记中取出前台属性定义,一切都正常了 我引用询问者的评论。据他说,这解决了他的问题
没关系,我知道了。我正在我的XAML中设置前台属性,它将根据优先级规则覆盖我在触发器中设置的内容。一旦我在我的
TextBlock
标记中取出前台属性定义,一切都正常了 你的backing bool变量和你的属性使用的是同一个名称,还是打字错误?你是说这里?Binding=“{Binding IsImportCompleted}”对不起,没关系,看看你使用的小写和大写的定义,我的眼睛看到它们是一样的。没关系,我明白了。我正在我的xaml中设置前台属性,它将根据优先级规则覆盖我在触发器中设置的内容。一旦我取出TextBlock标记中的前景属性定义,一切都正常了@coson将您的解决方案添加为答案,并将其标记为accept,以供进一步参考,并供可能与您有相同问题的用户使用。您的backing bool变量是否与您的属性使用相同的名称,或者这是一个输入错误?您的意思是?Binding=“{Binding IsImportCompleted}”对不起,没关系,看看你使用的小写和大写的定义,我的眼睛看到它们是一样的。没关系,我明白了。我正在我的xaml中设置前台属性,它将根据优先级规则覆盖我在触发器中设置的内容。一旦我取出TextBlock标记中的前景属性定义,一切都正常了@coson将您的解决方案添加为答案,并将其标记为accept,以供进一步参考,并供可能与您有相同问题的用户使用。
private bool isImportCompleted;
public bool IsImportCompleted
{
get { return isImportCompleted; }
set
{
isImportCompleted = value;
System.Diagnostics.Debug.WriteLine("Import Process Completed...OnPropertyChanged");
OnPropertyChanged("IsImportCompleted");
}
}