You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何格式化Telerik for WPF中GanttView的起止列日期字符串?

解决Telerik for WPF GanttView日期列(开始/结束)格式化问题

我来帮你搞定这个日期格式化的问题,你尝试的两种思路其实都有可行的方向,只是细节上需要调整,下面给你两种可靠的解决方案:

方案1:自定义CellTemplate(灵活可控)

你之前尝试的CellTemplate思路是对的,只是没写完完整的绑定逻辑。这种方式完全自定义单元格内容,不受GanttView默认格式化的限制,非常可靠。完整代码如下:

<t:ColumnDefinition MemberBinding="{Binding Path=Start}" Width="AutoHeaderAndContent">
    <t:ColumnDefinition.CellTemplate>
        <DataTemplate>
            <!-- 直接绑定数据项的Start属性,通过StringFormat指定日期格式 -->
            <TextBlock Text="{Binding Path=Start, StringFormat='dd-MM-yyyy'}" />
        </DataTemplate>
    </t:ColumnDefinition.CellTemplate>
</t:ColumnDefinition>

如果是格式化End列,只需要把Path=Start改成Path=End即可。

方案2:利用GanttView内置属性(简洁高效)

如果你用的是GanttView自动生成的默认开始/结束列,不需要自定义列的话,可以直接通过GanttView的内置属性来设置日期格式,代码更简洁:

<t:RadGanttView x:Name="radGanttView"
                TaskStartDateFormat="dd-MM-yyyy"
                TaskEndDateFormat="dd-MM-yyyy"
                <!-- 其他必要属性,比如ItemsSource等 -->
                >
    <!-- 你的列配置 -->
</t:RadGanttView>

这个方法直接告诉GanttView用指定格式渲染默认的开始和结束列,不需要额外写模板。

为什么你之前的第一种方案(直接在MemberBinding加StringFormat)不生效?

Telerik的GanttView对日期列的MemberBinding有内部的格式化逻辑,你直接在Binding上设置的StringFormat会被内置的处理逻辑覆盖,所以这种方式通常不会生效,建议优先用上面两种方案。

注意事项

  • 确保你的数据模型中Start和End属性是DateTime类型(不是字符串),这样StringFormat才能正确解析日期。
  • 如果是完全自定义的列(不是GanttView自动生成的),优先选择CellTemplate方案,灵活性更高。

内容的提问来源于stack exchange,提问作者stoermi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:31:32