Graeme_Grant
<DatePicker SelectedDate="{Binding PropertyName, StringFormat=dd/MM/yyyy}"/>
ОБНОВЛЕНИЕ: Рабочий пример ниже с
DataGridTextColumn
& a
DataGridTemplateColumn
тип столбца.
1. Code-Behind (работает так же для MVVM):public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Mock();
}
public ObservableCollection<Person> Persons { get; }
= new ObservableCollection<Person>();
private void Mock()
{
var rnd = new Random();
for (int i = 0; i < 100; i++)
{
Persons.Add(new Person
{
Name = $"Child {i}",
Birthday = RandomBirthDay()
});
}
DataGrid1.ItemsSource = Persons;
}
private Random gen = new Random();
DateTime RandomBirthDay()
{
var start = new DateTime(1950, 1, 1);
int range = (DateTime.Today - start).Days - 20;
return start.AddDays(gen.Next(range));
}
}
public class Person
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
public int Age
{
get => (new DateTime(1, 1, 1)
+ DateTime.Now.Subtract(Birthday)).Year - 1;
}
}
2. Страница Xaml:<Window
x:Class="DataGridDateColumn.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="CodeProject - DataGrid Date Column Examples"
WindowStartupLocation="CenterScreen" Height="300" Width="600">
<Grid>
<DataGrid x:Name="DataGrid1"
GridLinesVisibility="None"
AlternatingRowBackground="GhostWhite" AlternationCount="1"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
AutoGenerateColumns="False"
RowDetailsVisibilityMode="VisibleWhenSelected"
VirtualizingPanel.ScrollUnit="Pixel">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"
Width="*" />
<DataGridTextColumn Header="Age" Binding="{Binding Age}"
Width="120"/>
<DataGridTextColumn Header="Date Text" Width="120"
Binding="{Binding Birthday,
StringFormat=yyyy-MM-dd}" />
<DataGridTemplateColumn Header="Date Picker" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Birthday,
StringFormat=dd/MM/yyyy}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Birthday,
StringFormat=dd/MM/yyyy}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Если вы хотите изменить формат формата даты редактирования, это немного сложно. Погуглив вокруг, эта ссылка имеет ряд возможных решений:
.net-как изменить формат (например, dd/MMM/yyyy) DateTimePicker в приложении WPF-переполнение стека[
^]
Graeme_Grant
Работает так, как рекламируется ... добавление образца в решение... Кодовая страница находится на C#, а не на VB - это неважно. Что имеет значение, так это пример XAML.