0

我有一个绑定到模型属性的控件模板,比如说 Property1。但是,如果 Property2 更新(无论值如何),我想闪烁 Property1 绑定到的元素的背景。我见过很多例子,其中 DataTrigger 可用于类似的事情,但在这种情况下,我不在乎属性更改为什么值,只是它已更改。

到目前为止,我有这样的事情:

<Style x:Key="QuotePriceCellStyle" TargetType="TextBlock">
...
...
    <DataTrigger Binding="{Binding Path=AskPrice, UpdateSourceTrigger=PropertyChanged}" >
        <DataTrigger.EnterActions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation From="Red" To="Transparent" Duration="0:0:2" Storyboard.TargetProperty="Background.Color" RepeatBehavior="1x"/>
                </Storyboard>
            </BeginStoryboard>
        </DataTrigger.EnterActions>
    </DataTrigger>
</Style>

<ControlTemplate x:Key="QuotePrice" >
    <TextBlock Style="{StaticResource QuotePriceCellStyle}" Text="{Binding QuotePrice}">
</ControlTemplate>

以上显然没有做我需要的。QuotePrice 和 AskPrice 是模型的属性。关于如何让 QuotePrice 单元格在 AskPrice 更改时突出显示的任何想法?

4

2 回答 2

0

您可以像这样为 DataTrigger 使用转换器:

public class FlashConverter : IValueConverter
{
    private object oldvalue;
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null) return false;
        if (oldvalue == value) return false;
        else
        {
            oldvalue = value;
            return true;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

你的数据触发器将是:

<DataTrigger Binding="{Binding Path=AskPrice, Converter={StaticResource FlashConverter1}, UpdateSourceTrigger=PropertyChanged}" Value="True">

因此,在您的转换器中,您可以决定何时打开背景。

于 2012-08-07T15:34:30.050 回答
0

我选择使用 DataTrigger 有条件地将两个单元格绑定到两者,并使用 EventTrigger w/ NotifyTargetUpdated 设置为 true 来触发实际闪烁。

于 2012-08-10T23:10:17.223 回答