WPF样式触发不起作用?

时间:2013-06-28 05:38:54

标签: wpf

美好的一天,

我有一个带有黑色背景的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

1 个答案:

答案 0 :(得分:2)

我引用了Asker的评论。据他说,这解决了他的问题

没关系,我明白了。我在我的XAML中设置Foreground属性,它将始终覆盖我根据优先级规则在触发器中设置的属性。在我的TextBlock标记中取出Foreground属性定义后,一切正常!