Binding.Target更新后不初始化表单加载
本文关键字:初始化 表单 加载 Target 更新 Binding | 更新日期: 2024-11-06 03:08:12
下面我有一个由两个文本框组成的控件模板。控件模板用作网格的单元格显示模板,datacontext 是我的模型对象的绑定列表(实现 INotifyPropertyChanged)。 第二个文本框最初为"折叠"。 但是,当"要价"和"出价"价格更新发生时,我想通过切换可见性大约 1 秒来"闪烁"此文本框。
我看到的问题是,在表单的初始加载中,我确实看到第二个文本框闪烁,但在那之后......无。有趣的是,如果我单击单元格网格(激活编辑模板),然后单击单元格(恢复为显示模板,即如下所示的模板),则第二个文本框会闪烁。
谁能看到为什么第二个文本框在卖出价或买入价变化时不会"闪烁"的问题?我确实看到转换器正在按预期调用,但更新不会触发情节提要动画。
<Style x:Key="PriceSpreadAlertStyle" TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="Background" Value="Red" />
<Style.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated" >
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00.2" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4" Value="{x:Static Visibility.Collapsed}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.6" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.8" Value="{x:Static Visibility.Collapsed}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:01.0" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:01.2" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
<ControlTemplate x:Key="QuoteDisplayTemplate" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding QuotePrice}" />
<TextBlock Style="{StaticResource PriceSpreadAlertStyle}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource AskBidToSpreadConverter}">
<Binding Path="AskPrice" UpdateSourceTrigger="PropertyChanged" NotifyOnTargetUpdated="True" />
<Binding Path="BidPrice" UpdateSourceTrigger="PropertyChanged" NotifyOnTargetUpdated="True" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ControlTemplate>
检查它是否在执行 NotifyPropertyChanges 时在代码后面"获取"您的值。
出于同样的原因,请在最初启动时检查是否存在任何绑定表达式错误。
此外,您可以尝试将绑定模式更改为单向,我不这么认为,但它们可能会设置为一次性绑定,以防止它处理更改的事件。
编辑:您是否尝试过使用 SourceUpdated RoutedEvent 而不是 TargetUpdate?
我找到的解决方案是将"NotifyOnTargetUpdate="True"从绑定元素移动到多绑定元素。