WPF 바인딩 문자열 포맷 쇼트 날짜 문자열
WPF에서 Short Date라는 이름의 문자열 형식을 사용하고 싶습니다.
나는 다음과 같이 시도했다.
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
이거 어떻게 하는 거야?
이것을 시험해 보세요.
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
문화적으로 민감하고 필요합니다.NET 3.5 SP1 이후
메모: 대소문자를 구분합니다."d"는 짧은 날짜 형식 지정자이고, "D"는 긴 날짜 형식 지정자입니다.
표준 날짜 및 시간 형식 문자열의 MSDN 페이지에 문자열 형식의 전체 목록과 이 MSDN 블로그 게시물의 모든 옵션에 대한 자세한 설명이 있습니다.
단, 이것에는 하나의 gotcha가 있습니다.그것은 문화를 올바른 값으로 설정하지 않는 한 항상 미국 형식으로 날짜를 출력합니다.
이 속성을 설정하지 않으면 바인딩 엔진은 바인딩 대상 개체의 언어 속성을 사용합니다.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
positional 인수 표기법을 사용하면 마크업 확장 언어로 중괄호를 이스케이프할 수 있습니다.
유용한 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
문자열 형식의 단일 따옴표에 주의하십시오.이것은 동작하지 않습니다.
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\}}" />
값을 포함한 문자열을 추가하려면 다음 명령을 사용합니다.
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />
크리스의 답변에 덧붙이자면, 저는 저만의 심플함을 구현합니다.CultureAwareBinding
다음과 같이 합니다.
public class CultureAwareBinding : Binding
{
public CultureAwareBinding()
{
ConverterCulture = CultureInfo.CurrentCulture;
}
}
XAML에서는 다음과 같이 사용합니다.
<TextBlock
Text="{viewHelpers:CultureAwareBinding Path=ActivationDate, StringFormat=d}"/>
이 경우,CultureAwareBinding
에 상주하다viewHelpers
xmlns.
이 방법으로, 나는 이 모든 것이StringFormat=d
올바른 것을 사용하고 있다CultureInfo
시스템입니다.
언급URL : https://stackoverflow.com/questions/5046429/wpf-binding-stringformat-short-date-string
'programing' 카테고리의 다른 글
.gitignore는 Git에 의해 무시됩니다. (0) | 2023.04.16 |
---|---|
SQL: 열에서 고유한 값 수를 찾습니다. (0) | 2023.04.11 |
Python의 패스 스테이트먼트에 해당하는 Bash는 무엇입니까? (0) | 2023.04.11 |
Objective-C 및 Swift URL 인코딩 (0) | 2023.04.11 |
responseToSelector의 Swift는 무엇입니까? (0) | 2023.04.11 |