我有一个if len(name) >= 3: # (assume that user only has one middle name)
firstname = splits[0]
middlename = splits[1]
lastnames = splits[2:] ( catch all last names into a list )
,其中列是一个简单的DataGrid
。我想要做的是当用户在DataGridTextColumn
中输入行时,只允许他们输入特定格式,在本例中为DataGrid
。我将为他们输入dd/MM/yyyy
,然后他们必须输入符合此格式的日期。
这是我的/ /
;
DataGridColumn
有没有办法在用户输入时格式化<DataGridTextColumn Header="Date" Width="*"/>
?
答案 0 :(得分:1)
WPF中没有内置MaskedTextBox
。但是,您可以使用扩展WPF工具包中的MaskedTextBox
或DateTimePicker
。
我想在Extended WPF Toolkit和MaskedTextBox
中展示DateTimePicker。
<强>更新强>
当然,您可以将DateTimePicker
添加到DataGrid
首先,下载Extended WPF ToolKit through Nuget.
然后,在xmlns
中创建假名以使用WPF Extended Toolkit
库:
<Window
...
xmlns:wpfTool="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<DataGrid ItemsSource="{Binding Persons}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding IdPerson}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<wpfTool:DateTimePicker Value="{Binding MyDate}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Window>
和模型类:
public class Person
{
public int IdPerson { get; set; }
public string Name { get; set; }
public DateTime FirstDate { get; set; }
}
或强>
只需使用MaskedTextBox
与Mask="00-00-0000"
WPF Extended Toolkit
。例如:
<DataGrid ItemsSource="{Binding Persons}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding IdPerson}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<wpfTool:MaskedTextBox Mask="00-00-0000" Text="{Binding CheckDateTime}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
然后按CheckDateTime
DateTime.ParseExact(...);