라벨 콘텐츠의 WPF 문자열 형식
문자열 바인딩을 다음과 같이 포맷합니다.Amount is X
어디에X
는 라벨에 바인드된 속성입니다.
많은 예를 보았지만, 다음 예에서는 효과가 없습니다.
<Label Content="{Binding Path=MaxLevelofInvestment,
StringFormat='Amount is {0}'}" />
다음 조합도 시도해 봤습니다.
StringFormat=Amount is {0}
StringFormat='Amount is {}{0}'
StringFormat='Amount is \{0\}'
바인딩 속성의 데이터 유형을 다음과 같이 변경하려고 시도했습니다.int
,string
그리고.double
. 아무것도 작동하지 않는 것 같습니다.이것은 매우 일반적인 사용 사례이지만 지원되지 않는 것 같습니다.
이게 잘 안 되는 이유는Label.Content
속성이 유형입니다.Object
,그리고.Binding.StringFormat
유형의 속성에 바인딩할 때만 사용됩니다.String
.
현재 상황은 다음과 같습니다.
- 그
Binding
당신의 복싱입니까?MaxLevelOfInvestment
가치를 부여하고 저장합니다.Label.Content
속성(상자 포함 10진수 값)을 지정합니다. - Label 컨트롤에는 다음과 같은 템플릿이 있습니다.
ContentPresenter
. - 부터
ContentTemplate
설정되어 있지 않습니다.ContentPresenter
를 찾습니다.DataTemplate
에 대해 정의되어 있다Decimal
type. 아무것도 찾지 못하면 기본 템플릿을 사용합니다. - 에서 사용되는 기본 템플릿
ContentPresenter
라벨의 를 사용하여 문자열을 표시합니다.ContentStringFormat
소유물.
다음의 2개의 솔루션이 가능합니다.
- 라벨을 사용합니다.바인딩이 아닌 ContentStringFormat.String Format 또는
- TextBlock 등의 String 속성을 사용합니다.라벨이 아닌 텍스트.내용
다음은 라벨 사용 방법입니다.Content String Format:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
TextBlock을 사용하는 방법은 다음과 같습니다.
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
주의: 알기 쉽게 하기 위해 위의 설명에서 한 가지 세부사항을 생략했습니다.그ContentPresenter
실제로 자신의 것을 사용하다Template
그리고.StringFormat
속성은 로드 중에 자동으로 템플릿에 바인딩됩니다.ContentTemplate
그리고.ContentStringFormat
의 속성Label
그 때문에, 마치,ContentPresenter
실제로 를 사용하고 있습니다.Label
의 속성.
보편화하다StringFormatConverter : IValueConverter
. 형식 문자열을 전달합니다.ConverterParameter
.
Label Content="{Binding Amount, Converter={...myConverter}, ConverterParameter='Amount is {0}'"
또, 만들기StringFormatMultiConverter : IMultiValueConverter
예를 들어 형식 문자열에 두 개 이상의 개체가 필요한 경우Completed {0} tasks out of {1}
.
방금 확인했는데 어떤 이유로든 라벨과 함께 동작하지 않습니다.아마 내부적으로 ContentPresenter for Content 속성을 사용하기 때문일 것입니다.대신 TextBlock을 사용하면 됩니다.스타일이나 동작 등을 계승할 필요가 있는 경우는, 아래의 텍스트 블록 발췌를 라벨의 컨텐츠에 넣을 수도 있습니다.
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is \{0\}'} />
변환기를 사용해 보십시오.
<myconverters:MyConverter x:Key="MyConverter"/>
<Label Content="{Binding Path=MaxLevelofInvestment, Converter={StaticResource MyConverter"} />
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return String.Format("Amount is {0}", value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
언급URL : https://stackoverflow.com/questions/4206612/wpf-stringformat-on-label-content
'programing' 카테고리의 다른 글
키/값 쌍의 파일에서 환경 변수 설정 (0) | 2023.04.10 |
---|---|
WPF 이미지 리소스 저장 (0) | 2023.04.10 |
Excel 시리얼 날짜 번호를 로 변환하려면 어떻게 해야 하나요?NET 날짜 시간? (0) | 2023.04.10 |
데이터베이스 전체 SQL-Server 스크립팅 (0) | 2023.04.10 |
OpenSSL: PEM 루틴:PEM_read_bio: 시작선 없음: pem_lib.c:703: 예상: 신뢰할 수 있는 증명서 (0) | 2023.04.10 |