web-dev-qa-db-ja.com

時間と日付を表示するWPF DatePicker

データベースまたはプロパティの日付を正常に表示するDatePickerDataGridオブジェクトがあります。

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

日付の前の時刻を表示したいと思います。これは私が試したものですが、うまくいきません:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat='dd/MM/yyyy HH:mm:ss'}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

注:私はnotをコードビハインドで実行したいと考えています。

14
user3428422

拡張 DateTimePicker を使用します

9
zaman

あなたはこのようなことをすることができます:

            <DataGridTemplateColumn Header="YourDate">
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <DatePicker SelectedDate="{Binding YourDate, UpdateSourceTrigger=PropertyChanged}" />
                            <TextBox Margin="2 0 0 0" Text="{Binding YourDate, UpdateSourceTrigger=PropertyChanged, StringFormat='t'}" />
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding YourDate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

これにより、同じプロパティにバインドされているTextBoxの横にDatePickerが表示されます。 TextBoxは、日付のみを表示するStringFormatを取得しました。

UpdateSourceTriggerはPropertyChangedに設定されているため、ユーザーが競合することはありません。

2
Lyra

さらに、他のコンポーネントを使用せずに、編集したい形式で日付を表示する場合のみを使用して、次のように実行できます。

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock  Text="{Binding Path=Date,StringFormat={}{0:dd/MM/yyyy}}"  VerticalAlignment="Center" HorizontalAlignment="Left">
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
2
daniele3004