[wpf] WPF 바인딩 StringFormat 짧은 날짜 문자열

WPF에서 짧은 날짜라는 문자열 형식을 사용하고 싶습니다.

나는 다음과 같은 것을 시도했다.

<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />

어떻게하나요?



답변

이 시도:

<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />

문화에 민감하며 .NET 3.5 SP1 이상이 필요합니다.

참고 : 대소 문자를 구분합니다. “d”는 간단한 날짜 형식 지정자 이고 “D”는 자세한 날짜 형식 지정자 입니다.

표준 날짜 및 시간 형식 문자열 에 대한 MSDN 페이지 의 전체 문자열 형식 목록 과이 MSDN 블로그 게시물 의 모든 옵션에 대한 자세한 설명 있습니다.

그러나 이것에 대해 한 가지 문제가 있습니다. 문화를 올바른 값으로 설정하지 않는 한 항상 미국 형식으로 날짜를 출력합니다.

이 속성을 설정하지 않으면 바인딩 엔진은 바인딩 대상 개체 의 Language 속성을 사용 합니다. XAML에서 기본값은 “en-US”이거나 명시 적으로 설정된 경우 페이지의 루트 요소 (또는 모든 요소)에서 값을 상속합니다.

출처

이를 수행하는 한 가지 방법은 코드 뒤에있는 것입니다 (스레드 문화를 올바른 값으로 설정했다고 가정).

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

다른 방법은 바인딩에서 변환기 문화를 설정하는 것입니다.

<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />

출력을 현지화 할 수는 없지만.


답변

또는 영어 (또는 사용자 정의를 위해 혼합) 형식으로 사용하십시오.

StringFormat='{}{0:dd/MM/yyyy}'


답변

사용 StringFormat특성 (또는 ContentStringFormatContentControl및 그 유도체, 예를 Label).

<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />

메모 {}표준 이전 String.Format위치 인수 표기가 괄호 마크 업 확장 언어로 탈출 할 수 있습니다.


답변

내가 유용하다고 생각한 일부 DateTime StringFormat 샘플. C # 예제 에서 해제

DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone


답변

값이있는 문자열을 추가하려면 다음을 사용하십시오.

<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />


답변

문자열 형식에 대한 작은 따옴표에 유의하십시오. 작동하지 않습니다.

    Content="{Binding PlannedDateTime, StringFormat={}{0:yy.MM.dd HH:mm}}"

이것은 다음을 수행합니다.

    Content="{Binding PlannedDateTime, StringFormat='{}{0:yy.MM.dd HH:mm}'}"


답변

다음을 사용하십시오.

<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />