wpf 更改日期选择器中显示日期之前的日期开始日期

camsedfj  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(473)

我有一个WPF应用程序,其中有一个datepicker

<DatePicker HorizontalAlignment="Left" VerticalAlignment="Top" SelectedDate="{Binding DateP, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  DisplayDateStart="{Binding Source={x:Static sys:DateTime.Now}, Mode=OneTime}"/>

我想更改DisplayDateStart日期之前的日期的外观。现在这些日期已隐藏
1.我该怎么做?
1.完成这项任务的最佳方法是什么?

k2arahey

k2arahey1#

您可以指定BlackoutDates,而不是使用DisplayDateStart隐藏日期,这样日期将显示但不可选择。这样您可以设置DatePicker的样式,并将您喜欢的样式应用于不可选择的日期(默认样式中已划掉)。
更多关于这个主题:MSDN: DatePicker.BlackoutDates Property

xjreopfe

xjreopfe2#

WPF似乎没有为这些隐藏项提供VisualState。但是,您可以在CalendarDayButton样式的ControlTemplate上使用触发器。在下面的示例中,我折叠隐藏的日期项以避免不必要的空格。

<Style TargetType="CalendarDayButton" x:Key="CalendarDayButtonStyle">
  <Setter Property="MinWidth" Value="5" />
  <Setter Property="MinHeight" Value="0" />
  <Setter Property="FontSize" Value="10" />
  <Setter Property="HorizontalContentAlignment" Value="Center" />
  <Setter Property="VerticalContentAlignment" Value="Center" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="CalendarDayButton">
        <Grid x:Name="dayButtonContainer">
          // ... your presentation display
        </Grid>
        <ControlTemplate.Triggers>
          <Trigger Property="Visibility" Value="Hidden">
            <Setter TargetName="dayButtonContainer" Property="Visibility" Value="Collapsed"/>
          </Trigger>
          <Trigger Property="Visibility" Value="Visible">
            <Setter TargetName="dayButtonContainer" Property="Visibility" Value="Visible"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

相关问题