programing

문자열 형식을 사용하여 WPF XAML 바인딩에 문자열 추가

batch 2023. 4. 26. 23:07
반응형

문자열 형식을 사용하여 WPF XAML 바인딩에 문자열 추가

정수 값(이 경우 섭씨 온도)에 대한 단방향 바인딩이 있는 TextBlock이 포함된 WPF4 애플리케이션이 있습니다.XAML은 다음과 같습니다.

<TextBlock x:Name="textBlockTemperature">
        <Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>

실제 온도 값을 표시하는 데는 문제가 없지만 숫자(30°C가 아니라 30°C)만 포함하도록 이 값을 포맷하고 싶습니다.StringFormat에 대해 읽고 다음과 같은 일반적인 예를 몇 가지 보았습니다.

// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />

그리고.

// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>

안타깝게도, 제가 본 예들 중 어떤 것도 제가 하려고 하는 것처럼 경계 값에 문자열을 추가하지 않았습니다.뭔가 간단한 것이겠지만 찾을 운이 없네요.누가 나에게 그것을 어떻게 하는지 설명해 줄 수 있습니까?

첫 번째 예는 효과적으로 필요한 것입니다.

<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />

다음은 문자열 중간에 바인딩이 있거나 여러 바인딩이 있는 경우에 읽기 쉽게 사용할 수 있는 대안입니다.

<TextBlock>
  <Run Text="Temperature is "/>
  <Run Text="{Binding CelsiusTemp}"/>
  <Run Text="°C"/>  
</TextBlock>

<!-- displays: 0°C (32°F)-->
<TextBlock>
  <Run Text="{Binding CelsiusTemp}"/>
  <Run Text="°C"/>
  <Run Text=" ("/>
  <Run Text="{Binding Fahrenheit}"/>
  <Run Text="°F)"/>
</TextBlock>

바인딩에서 문자열 형식을 사용하면 "텍스트" 속성에만 사용할 수 있습니다.레이블에 사용합니다.콘텐츠가 작동하지 않음

xaml에서

<TextBlock Text="{Binding CelsiusTemp}" />

ViewModel이러한 방식으로 값을 설정하면 다음과 같이 작동합니다.

 public string CelsiusTemp
        {
            get { return string.Format("{0}°C", _CelsiusTemp); }
            set
            {
                value = value.Replace("°C", "");
              _CelsiusTemp = value;
            }
        }

언급URL : https://stackoverflow.com/questions/19278515/use-stringformat-to-add-a-string-to-a-wpf-xaml-binding

반응형