如何在xaml wpf c中将calendardaterange结尾设置为昨天

时间:2017-07-23 07:31:20

标签: c# wpf xaml datepicker

像这样的东西 但这里是一个例外。我可以使用结束标记将日期设置为昨天,如下所示,以便我的datepicker控件将日期直到昨天为止

<DatePicker BorderBrush="LightBlue" BorderThickness="1" 
  Name="dtTierValidTo"  IsEnabled="{Binding CanEdit}"
  DisplayDateStart="{Binding TierDealValidFromDate, Mode=OneWay}"   
  SelectedDate="{x:Static sys:DateTime.Now}" 
  DisplayDate="{x:Static sys:DateTime.Now}" 
  Width="120" HorizontalAlignment="Left">
    <DatePicker.BlackoutDates>
        <CalendarDateRange Start="1/1/1500" End="7/22/2017"/>
    </DatePicker.BlackoutDates>
</DatePicker>

我希望calendarDateRange中的结束标记结束于昨天,如果我给出如下所示

<CalendarDateRange Start="1/1/1500" End="{x:Static sys:DateTime.Now}"/>

它显示错误,因此我的要求是结束标记应该在昨天的日期。

我想要过去所有过去的日期。这意味着用户应该只能选择今天和未来的日期。请帮忙 please click the link to see the image

如果我通过如下结束日期,它会给出正确的输出。但我想要 作为昨天的结束日期而不是我手动输入日期

<DatePicker.BlackoutDates>
    <CalendarDateRange Start="1/1/1500" End="7/22/2017"/>
</DatePicker.BlackoutDates>

3 个答案:

答案 0 :(得分:1)

以下事件对我有用。 在xaml -

<Calendar Name="calendar1" Loaded="calendar1_Loaded"/>

在xaml.cs页面

 private void calendar1_Loaded(object sender, RoutedEventArgs e) {
            DatePicker cal = sender as DatePicker;
            cal.BlackoutDates.AddDatesInPast();
        }

答案 1 :(得分:0)

dtTierValidTo.DisplayDateStart = System.DateTime.Today.Date.AddDays(-1);  dtTierValidTo.DisplayDateEnd = new DateTime(年,月,日);

答案 2 :(得分:0)

编辑:

msdn开始,您可以通过以下方式添加代码隐藏范围:

calendarWithBlackoutDates.BlackoutDates.Add(
    new CalendarDateRange(new DateTime(2009, 1, 2), new DateTime(2009, 1, 4)));

所以没有什么可以阻止你这样做:

calendarWithBlackoutDates.BlackoutDates.Add(
    new CalendarDateRange(new DateTime(1500, 1, 1), DateTime.Today.AddDays(-1));

您也可能对使用DisplayDateStart和/或DisplayDateEnd属性Calendar(和DatePicker)的Limiting the Range of Selectable Dates in a Calendar感兴趣。

Here您可以找到与tomorrow而不是yesterday有同样问题的人,也许它可以提供帮助!