【问题标题】:flashing row in telerik GridViewTelerik GridView中闪烁的行
【发布时间】:2012-09-20 10:29:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf gridview


    【解决方案1】:

    因此,解决方案是应用行样式选择器并将其定位到 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 来设置样式... 因此,如果您的网格中的某一行满足此条件,那么它将在所需的持续时间内从白色变为红色。

    【讨论】:

    • 查看 repeatbehavior 来控制动画触发的次数。 msdn.microsoft.com/en-us/library/…
    • 根据您使用的 Telerik 控件的版本(以及您需要的网格性能),您可以关闭 EnableRowVirtualisation,这将导致网格每次您都不会重新生成行容器滚动,因此不会触发 PropertyChanged,因此不会再次触发动画。
    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多