WPF DatePicker:自定义DisplayText

时间:2015-07-16 05:21:26

标签: wpf binding datepicker

我应该为DatePicker DisplayDate设置自定义格式,但我的问题是,无法使用标准自定义格式标记(例如y,{{ 1}},yyyy等等。

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

3 个答案:

答案 0 :(得分:0)

您可以将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));

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

感谢您的回答。我的问题是没有我需要的格式。我需要以两位数(yy)显示年份,但之后我需要一年中的那一天,因为这不是格式。 我目前的解决方案是使用ordanary TextBox和Calendar Popup编写UserControl。我只是希望我可以使用标准控件。