WPF 데이터 그리드의 날짜 형식
나는 이미 해결책을 찾기 위해 stackoverflow를 검색했고 이것을 발견했습니다.
동적으로 빌드 된 WPF DataGrid에서 날짜 형식을 지정해야합니다.
내 문제는 SQL-Server-Database에서 일부 데이터를로드하고 DataGrid의 WPF 응용 프로그램에 표시하고 싶다는 것입니다. 이것은 아주 잘 작동합니다. 변경하고 싶은 유일한 것은 날짜 열이 "DD / MM / YYYY HH : MM : SS"형식이고 "DD.MM.YYYY"가 필요하다는 것입니다. 좋아, 그런 다음 아래 링크를보고 내 프로그램에서 이것을 시도했습니다.
<Grid Width="648" Height="263">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="172*" />
<ColumnDefinition Width="90*" />
<ColumnDefinition Width="386*" />
</Grid.ColumnDefinitions>
<DataGrid Name="dgBuchung" Height="213" HorizontalAlignment="Left" Margin="30,16,0,0" VerticalAlignment="Top" Width="595" AutoGenerateColumns="True" ItemsSource="{Binding}" Grid.ColumnSpan="3" Foreground="Black" BorderBrush="#FF688CAF" Opacity="1" Background="White" BorderThickness="1" >
<!-- <ab:DataGridTextColumn Header="Fecha Entrada" Width="110"
Binding="{Binding date, StringFormat={}{0:dd/MM/yyyy}}" IsReadOnly="True" />
-->
</DataGrid>
</Grid>
주석 처리 된 부분은 내 해결책이지만 XMLParseException이 발생합니다. 우선, AutoGenerateColumns를 사용하는 동안 이러한 솔루션이 가능합니까? 그렇지 않다면 어떻게 처리 할 수 있습니까? 그렇다면 위 코드의 문제점은 무엇입니까?
편집 : 내 응용 프로그램을 다시 빌드하지 않기로 결정했기 때문에 내 질문이 해결되지 않았습니다. AutoGenerateColumns = true 인 솔루션이 없습니까?
DataGrid.Columns를 사용하는 것을 잊지 마십시오. 모든 열은 해당 컬렉션 내에 있어야합니다. 내 프로젝트에서 날짜 형식을 약간 다르게 지정합니다.
<tk:DataGrid>
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Binding="{Binding StartDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" />
</tk:DataGrid.Columns>
</tk:DataGrid>
AutoGenerateColumns를 사용하면 DataGird가 자체 열을 추가하므로 서식을 조정할 수 없습니다.
여기 파티에 아주 늦었지만 다른 사람이이 페이지를 우연히 발견하면 ...
XAML에서 AutoGeneratingColumn 처리기를 설정하여 수행 할 수 있습니다.
<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn" ..etc.. />
그런 다음 코드 뒤에서 다음과 같이하십시오.
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(System.DateTime))
(e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
}
바인딩 된 속성이 DateTime이면 필요한 것은
Binding={Property, StringFormat=d}
Binding="{Binding YourColumn ,StringFormat='yyyy-MM-dd'}"
먼저 datagrid를 선택한 다음 속성으로 이동하여 Datagrid_AutoGeneratingColumn을 찾고 두 번 클릭 한 다음이 코드를 사용하십시오.
Datagrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Your column name")
(e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MMMMMMMMM/yyyy";
if (e.PropertyName == "Your column name")
(e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MMMMMMMMM/yyyy";
}
WPF에서 작동합니다.
받아 들여지는 대답이 꽤 오래되었다는 것을 알고 있지만 AutoGeneratColumns로 서식을 제어하는 방법이 있습니다.
먼저 열이 생성 될 때 트리거되는 함수를 만듭니다.
<DataGrid x:Name="dataGrid" AutoGeneratedColumns="dataGrid_AutoGeneratedColumns" Margin="116,62,10,10"/>
그런 다음 생성 된 열의 유형이 DateTime인지 확인하고 해당 문자열 형식을 "d"로 변경하여 시간 부분을 제거합니다.
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if(YourColumn == typeof(DateTime))
{
e.Column.ClipboardContentBinding.StringFormat = "d";
}
}
참조 URL : https://stackoverflow.com/questions/7978249/date-formatting-in-wpf-datagrid
'programing' 카테고리의 다른 글
문자열에서 마지막 두 문자 제거 (Swift 3.0) (0) | 2021.01.16 |
---|---|
CAGradientLayer, 크기가 제대로 조정되지 않고 회전시 찢어짐 (0) | 2021.01.16 |
EditText 요청 포커스 (0) | 2021.01.16 |
상태가 내 클래스로 구성된 경우 Android에서 방향 변경 중 상태를 저장하는 방법은 무엇입니까? (0) | 2021.01.16 |
Guava를 사용하여 가능한 null 값을 기본값으로 변환하는 방법은 무엇입니까? (0) | 2021.01.16 |