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
특성 (또는 ContentStringFormat
에 ContentControl
및 그 유도체, 예를 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\}}" />
