【发布时间】:2012-09-20 10:29:26
【问题描述】:
我是 Telerik 控件的新手,我正在做一个带有 GridView 的应用程序,我想让一些行闪烁或闪烁。
我找到了一个可以通过 StyleSelector 完成的样式,但是当我尝试使用 styleSelectors 更改行背景颜色时,滚动无法正常工作。
有人知道有没有简单的方法? 希望有人能帮助我。 谢谢!
【问题讨论】:
我是 Telerik 控件的新手,我正在做一个带有 GridView 的应用程序,我想让一些行闪烁或闪烁。
我找到了一个可以通过 StyleSelector 完成的样式,但是当我尝试使用 styleSelectors 更改行背景颜色时,滚动无法正常工作。
有人知道有没有简单的方法? 希望有人能帮助我。 谢谢!
【问题讨论】:
因此,解决方案是应用行样式选择器并将其定位到 Telerik:GridViewRow 的 TargetType..
<Behaviours:FlashingRowStyleSelector x:Key="resultsGridStyle">
<Behaviours:FlashingRowStyleSelector.SucceededStyle>
<Style TargetType="telerik:GridViewRow">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<ColorAnimation Storyboard.TargetProperty="Background.Color"
Duration="0:0:0.2" From="White" To="Red" RepeatBehavior="Forever" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Behaviours:FlashingRowStyleSelector.SucceededStyle>
然后在你设置这个属性
RowStyleSelector="{StaticResource resultsGridStyle}"
然后控制它 - 您必须编写一个继承自 StyleSelector 的类,该类根据填充网格中任何行项目的值来决定选择哪种样式。所以这样的事情应该可以解决问题
public class FlashingRowStyleSelector : StyleSelector
{
#region Properties
/// <summary>
/// Gets or sets the succeeded style.
/// </summary>
public Style SucceededStyle { get; set; }
/// <summary>
/// Gets or sets the succeeded style.
/// </summary>
public Style NormalStyle{ get; set; }
#endregion
#region Public Methods
/// <summary>
/// The select style.
/// </summary>
/// <param name="item">
/// The item.
/// </param>
/// <param name="container">
/// The container.
/// </param>
/// <returns>
/// The <see cref="Style"/>.
/// </returns>
public override Style SelectStyle(object item, DependencyObject container)
{
var info = item as RowObject
if (info != null)
{
if (info.SomeProperty == "1")
{
return this.SucceededStyle;
}
}
return this.NormalStyle;
}
#endregion
}
基本上所有这些都是根据设置的属性 1 来设置样式... 因此,如果您的网格中的某一行满足此条件,那么它将在所需的持续时间内从白色变为红色。
【讨论】: