Дата по умолчанию для DatePicker в другом формате - PullRequest
1 голос
/ 21 марта 2019

У меня есть окно WPF с контроллером DatePicket.Я хотел бы показать текущую дату, а не текст «Показать календарь».

Я использовал эту ссылку

xmlns:sys="clr-namespace:System;assembly=mscorlib"

и этот код

<DatePicker x:Name="DatePicker1" Grid.Column="1" Grid.Row="0" SelectedDate="{x:Reference sys:DateTime.Now}">

Он работает нормально, но я хотел бы изменить формат даты следующим образом: гггг.мм.дд.Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Вы можете сделать это, изменив шаблон выбора даты, чтобы изменить текстовое поле. Пожалуйста, смотрите пример ниже:

<DatePicker SelectedDate="{x:Static sys:DateTime.Now}">
   <DatePicker.Resources>
      <Style TargetType="DatePickerTextBox">
         <Setter Property="Control.Template">
            <Setter.Value>
               <ControlTemplate>
                  <TextBox x:Name="PART_TextBox"
                     Text="{Binding Path=SelectedDate, StringFormat={}{0:yyyy.MM.dd}, 
                     RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
               </ControlTemplate>
            </Setter.Value>
         </Setter>
      </Style>
   </DatePicker.Resources>
</DatePicker>

Я изменил SelectedDate="{x:Static sys:DateTime.Now}" с x:Reference на x:Static, чтобы он работал при тестировании.

Результат: enter image description here

Кстати, если вы хотите повторно использовать этот код для нескольких сборщиков дат, вы можете просто скопировать XAML для тегов <Style></Style> (и все внутри) и поместить его в свой файл App.xaml в <Application.Resources> и стиле / формат будет применяться ко всем средствам выбора даты.

Я нашел вышеуказанный код здесь .

0 голосов
/ 21 марта 2019

Вам нужно будет указать формат, как показано ниже. Ниже приведен пример текстового блока:

<TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, StringFormat=Date: {0:yyyy.MM.dd}}" />

Для DatePicker вам нужно будет установить шаблон элемента управления для изменения TextBlock.Ниже приведен пример кода из:

<Style TargetType="{x:Type DatePickerTextBox}">
 <Setter Property="Control.Template">
  <Setter.Value>
   <ControlTemplate>
    <TextBox x:Name="PART_TextBox"
     Text="{Binding Path=SelectedDate, StringFormat='dd MM yyyy', 
     RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
   </ControlTemplate>
  </Setter.Value>
 </Setter>
</Style>

Здесь вы можете использовать любой стандартный формат DateTime.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...