2016-04-13 45 views
1

DataGrid sütunlarımın üzerinde basit bir DataGridTextColumn olduğu yer var. Ne yapmak istediğim, kullanıcı DataGrid satırında yazarak, yalnızca belirli bir biçimi girmelerine izin verdiğinden, bu durumda dd/MM/yyyy. Onlar için / / gireceğim, daha sonra bu formata uyan bir tarih yazmaları gerekiyor.Kullanıcı Biçimlendirdiği gibi DataGrid Sütunu Biçimlendir

Bu benim DataGridColumn;

<DataGridTextColumn Header="Date" Width="*"/> 

kullanıcı yazarak gibi Column biçimlendirmek için bir yolu var mı?

+0

DateTime.ParseExact(...); ile ayrıştırma. Genellikle bilgi girmek için başka bir form oluşturmanızı öneririm ve ardından 2. form girişlerini DataGrid'e kopyalarım. – jdweng

cevap

1

WPF'de yerleşik MaskedTextBox yoktur. Ancak, Genişletilmiş WPF Araç Takımı'dan MaskedTextBox veya DateTimePicker'u kullanabilirsiniz.

Extended WPF Toolkit ve MaskedTextBox'dan DateTimePicker göstermesini istiyorum. enter image description here

Güncelleme:

:

Tabii, WPF Extended Toolkit kütüphane kullanımı xmlns mahlasını oluşturmak Sonra Extended WPF ToolKit through Nuget.

indir, İlk başta DateTimePicker-DataGrid

ekleyebilir

<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> 

ve model sınıfı:

public class Person 
{ 
    public int IdPerson { get; set; } 
    public string Name { get; set; } 
    public DateTime FirstDate { get; set; } 
} 

VEYA:

Sadece WPF Extended Toolkit den Mask="00-00-0000" ile MaskedTextBox kullanın. Örneğin: daha sonra

<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> 

ve DataGrid'e düzenleme kötü CheckDateTime

+0

DataGrid'in içinde kullanılabilir mi? – CBreeze

+0

@ CBreeze lütfen, güncellenmiş bölümüm – StepUp

+0

@ CBreeze'e herhangi bir soru sormaya çekinmeyin. Cevabımın size yardımcı olduğunu düşünüyorsanız, diğer kişilerin gelecekteki aramalarını basitleştirmek için cevabımı bir yanıt olarak işaretleyebilirsiniz. Lütfen şu http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work sayfasını okuyun – StepUp