【问题标题】:TimePicker ONLY Bind TimeTimePicker ONLY 绑定时间
【发布时间】:2018-01-20 10:09:25
【问题描述】:

我已经安装了 WPF Toolkit Extender 并且想使用 TimePicker...并且只使用 TimePicker。我将值绑定到我的 VM 中的字符串属性。 TimePicker 的值始终包括日期。我如何只获得时间?我哪里错了? (是的,我确定我使用的是 TimePicker 而不是 DateTimePicker)。

XAML

        <xctk:TimePicker 
                     Margin="106,178,170,256"
                     Format="Custom"
                     FormatString="hh:mm tt"
                     TimeInterval="00:15"
                     Value="{Binding Time, Mode=TwoWay}"
                     />

视图模型

    private String _time;

    public String Time
    {
        get { return _time; }
        set { SetProperty(ref _time, value, () => Time); }
    }

调试时的价值

“2018 年 1 月 19 日上午 12:00:31”

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    Xceed TimePicker 的Value 属性是Nullable&lt;DateTime&gt;,它将包含整个日期和时间值。

    我建议做的是绑定到 Nullable&lt;DateTime&gt; (DateTime?) 的属性,因为这是您实际使用的。如果你想要一个字符串表示,你可以有一个基于Time属性的计算属性。

    public string TimeText => String.Format("", Time);
    

    您还必须在附加属性上引发属性更改事件(如有必要)。真的很难说,因为我不确定你在哪里需要时间的字符串表示,而不是使用实际的 DateTime 对象。最后一点是,您可以使用返回 TimeSpan 对象的 TimeOfDay 属性提取 DateTime 的时间部分。

    【讨论】:

    • 谢谢你,我。您知道 WPF 中的“仅时间”选择器有什么更好的解决方案吗?
    • 我不知道有任何TimePicker 控件对TimeSpan 进行操作,而不是存储DateTime 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2016-05-03
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多