WPF样式触发器不工作?

WPF样式触发器不工作?,wpf,Wpf,你好 我有一个黑色背景的TextBlock元素和一个黑色前景色的文本。我不希望我的用户在任务完成之前看到文本。然后文本将变成绿色 xaml中的样式触发器如下所示: <Style x:Key="DataImportCompletedStyle" TargetType="{x:Type TextBlock}"> <Setter Property="Foreground" Value="#FF000000" /> <Style.Tr

你好

我有一个黑色背景的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 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");
        }
    }