在 RadTimeline wpf 中仅使用 HourInterval 时显示日期

show dates when using only HourInterval in RadTimeline wpf

我不太熟悉 "Wpf" 和 "Telerik" 控件。

我正在使用

telerik RadTimeline    

并希望在

中显示时间表
HourInterval.

用户可以select开始和结束日期,时间轴将以小时为单位显示间隔。

但是这个时间线的问题是它只显示小时而不显示这个小时 exist.So 的日期,用户可能会感到困惑。

如果日期能显示在时间轴的最上面一行就好了 您可以在调试模式下滚动查看此代码。

<telerik:RadTimeline x:Name="timeline"
               VerticalScrollBarVisibility="Visible"
               PeriodStart="1-Jan-2010 12:00:00 AM" PeriodEnd="3-Jan-2010 11:59:59 PM">
    <telerik:RadTimeline.Intervals>                   
        <telerik:HourInterval />                   
    </telerik:RadTimeline.Intervals>
</telerik:RadTimeline>

您可以通过创建自定义 IntervalFormatterProvider 来实现此目的

<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        xmlns:formatter="clr-namespace:YouFormatterNamespace"
>
<telerik:RadTimeline x:Name="timeline"
           VerticalScrollBarVisibility="Visible"
           PeriodStart="1-Jan-2010 12:00:00 AM" PeriodEnd="3-Jan-2010 11:59:59 PM">
    <telerik:RadTimeline.Resources>
            <formatter:HourFormatterProvider x:Key="HourFormatterProvider">
            </formatter:HourFormatterProvider>                
    </telerik:RadTimeline.Resources>
    <telerik:RadTimeline.Intervals>
            <telerik:HourInterval FormatterProvider="{StaticResource HourFormatterProvider}"/>            
    </telerik:RadTimeline.Intervals>
</telerik:RadTimeline>
</Window>

提供商示例:

public class HourFormatterProvider : IIntervalFormatterProvider
{
    private static readonly Func<DateTime, string>[] formatters;
    private Func<DateTime, string>[] intervalSpanFormatters;

    static HourFormatterProvider()
    {
        formatters = new Func<DateTime, string>[]
        {
            date => date.ToString("yy/MM/dd HH:mm:ss")
        };
    }

    public Func<DateTime, string>[] GetFormatters(IntervalBase interval)
    {
        return formatters;
    }

    public Func<DateTime, string>[] GetIntervalSpanFormatters(IntervalBase interval)
    {
        if (this.intervalSpanFormatters == null)
        {
            this.intervalSpanFormatters = new Func<DateTime, string>[]
            {
                date => String.Format("{0} - {1}", date.ToString("dddd H:mm"), interval.IncrementByCurrentInterval(date).ToString("H:mm"))
            };
        }

        return this.intervalSpanFormatters;
    }
}