我有以下 DataGrid 单元格,我想在基础颜色出现后立即为其背景颜色设置动画LastTradePrice
财产改变其价值。
<DataGridTextColumn Header="Last Trade Price" Binding="{Binding LastTradePrice}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
// ???
<DataTrigger Binding="{Binding LastTradePrice}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Aqua" Duration="0:0:0.3" Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
1) 线路<DataTrigger Binding="{Binding LastTradePrice}" Value="True">
但没有任何意义。
该物业LastTradePrice
显然不是一个要测量的布尔值value = True
。如何在属性更新时触发触发器?显然我已经实现了 INotification:
public double LastTradePrice
{
get { return _model.LastTradePrice; }
set
{
if (value != _model.LastTradePrice)
{
LastTradePrice = value;
OnPropertyChanged("LastTradePrice");
}
}
}
2)如果我将整个样式定义存储在里面<Window.Resources>
,我将如何访问 ViewModels 属性LastTradePrice
?
非常感谢
正如评论中提到的,您可以利用Binding.TargetUpdated http://msdn.microsoft.com/en-us/library/system.windows.data.binding.targetupdated%28v=vs.110%29.aspx event.
当值从绑定源传输到绑定目标时发生,但仅适用于 NotifyOnTargetUpdated 值设置为 true 的绑定。
这意味着如果值从视图模型拉入视图,并且NotifyOnTargetUpdated == True
反对绑定,TargetUpdated
事件被引发。因此,它会在最初显示价值时或稍后在您提高时提高INotifyPropertyChanged.PropertyChanged
视图模型中的事件。
<DataGridTextColumn Header="Last Trade Price" Binding="{Binding Path=LastTradePrice, NotifyOnTargetUpdated=True}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Aqua" Duration="0:0:0.3" AutoReverse="True" Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
另外如果想要的话简要通知随着你想要设置的颜色变化AutoReverse="True"
反对ColorAnimation
否则Aqua
颜色会留下来。该解决方案的唯一缺点是它也会在以下情况下触发DataGrid
创建并加载初始值.
还有Binding.SourceUpdated
与以下内容一起使用的事件NotifyOnSourceUpdated
反对绑定并以相反的方向起作用TargetUpdated
事件。当新值从视图传输到视图模型时,它将被触发。
获取或设置一个值,该值指示当值从绑定目标传输到绑定源时是否引发 SourceUpdated 事件。
默认情况下两者NotifyOnTargetUpdated
abd NotifyOnSourceUpdated
将设置为 false 以节省在视图和视图模型之间传输值时引发 2 个附加事件的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)