1

我是 Telerik 控件的新手,我正在使用 GridView 做一个应用程序,我想让一些行闪烁或闪烁。

我找到了通过 StyleSelector 完成的样式,但是当我尝试使用 styleSelectors 更改行背景颜色时,滚动无法正常工作。

有人知道是否有简单的方法吗?希望有人能帮助我。谢谢!

4

1 回答 1

2

所以解决这个问题的方法是应用一个行样式选择器并将其定位在 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 设置样式...因此,如果网格中的一行满足此条件,那么它将在所需的持续时间内从白色变为红色进行动画处理。

于 2012-12-04T10:37:37.333 回答