WPF DatePicker:自定义显示文本

Posted

技术标签:

【中文标题】WPF DatePicker:自定义显示文本【英文标题】:WPF DatePicker: Custom DisplayText 【发布时间】:2015-10-05 09:45:09 【问题描述】:

我的DatePicker DisplayDate 应该有一个自定义格式,但我的问题是,不能使用标准自定义格式标签(如yyyyyd 和等等)。

有没有办法可以将SelectedDate 绑定到DateTime 属性并将DisplayText 绑定到字符串属性?

【问题讨论】:

跟进这个:***.com/questions/18662870/date-converter-using-wpf 【参考方案1】:

您可以使用StringFormat 来指定特定的DatePicker 日期格式(查看此示例:Changing the string format of the WPF DatePicker)

这是一个简单的示例(确保 ViewModel 是适合您的 xaml 文件的 DataContext)

主窗口

public partial class MainWindow : Window

    public MainWindow()
    
        InitializeComponent();

        var vm = new ViewModel();
        DataContext = vm;
    

    private void Button_Click(object sender, RoutedEventArgs e)
    
        var context = (ViewModel) DataContext;
        var date = context.SelectedDate;
        MessageBox.Show(string.Format("Selected Date is 0:MM/dd/yy H:mm:ss zzz", date));
    

查看模型

public class ViewModel

    public DateTime SelectedDate  get; set; 

Xaml 文件

 <DatePicker VerticalAlignment="Top"
                SelectedDate="Binding SelectedDate" />
 <Button Content="Button"
         HorizontalAlignment="Left"
         Margin="10,74,0,0"
         VerticalAlignment="Top"
         Width="75"
         Click="Button_Click" />

您可以在显示 MessageBox 时更改DateTime 的格式(检查此:https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx)

更新

对于 (yy-day Of Year),您可以使用:

MessageBox.Show(string.Format("Selected Date is 0:yy-1", date, date.DayOfYear));

【讨论】:

谢谢,所以使用标准控件只能使用附加控件(如按钮),而不是直接在日期选择器的文本框中。我想我不会绕过 UserControl。 您可以根据需要在 DatePicker 上应用一些事件。我不明白你的目标是什么。但是,如果您想了解更多信息,我可以回答您的问题:)。 [此外,您可以自定义UserControl,但是,您已经可以使用 DatePicker。如果你想在运行时在 DatePicker 的文本框中显示,你可以做一个转换器(格式化你的格式)【参考方案2】:

我认为您可以使用字符串格式属性以自定义方式显示日期

  Binding="Binding CustomerParcelDropTime,StringFormat=\0:dd/MM/yyyy HH:mm:ss \"

【讨论】:

【参考方案3】:

感谢您的回答。我的问题是没有我需要的格式。我需要以两位数(yy)显示年份,但在那之后我需要一年中的一天,因为那是没有格式的。 我目前的解决方案是编写一个带有普通文本框和日历弹出窗口的用户控件。我只是希望我可以使用标准控件。

【讨论】:

以上是关于WPF DatePicker:自定义显示文本的主要内容,如果未能解决你的问题,请参考以下文章

WPF:DatePicker 文本垂直居中

WPF:DatePicker文本垂直居中

WPF DatePicker 自定义格式

自定义 WPF DatePicker 掩码

如何本地化 WPF 4.0 DatePicker 控件

在 WPF 的 DatePicker 中显示当前日期