[.net] String.Format에 해당하는 WPF XAML Data Binding은 무엇입니까?


Answers

나는 StringFormat = {0 : P}로 바인딩을 여러개의 텍스트 블록으로 나누었을 것이다.

<TextBox Text="{Binding Something, StringFormat=\{0:P\}}" />

예제를 보려면이 게시물을 참조하십시오 . StringFormat의 Lester의 WPF 블로그

Checkout VS2010 - 속성의 바인딩에는 옵션의 서식이 포함됩니다.

Question

또는 좀 더 명확히 말하자면, 텍스트의 일부분을 바운드 값에서 가져 오도록 텍스트 블록 (예 : 툴팁에 포함)을 어떻게 포맷 할 수 있습니까?

C #에서는 다음과 같이 사용합니다.

_toolTip.Text = string.Format("{1:#0}% up, {2:#0}% down",
    Environment.NewLine, percentageOne, percentage2);

그러나 Text 속성의 WPF XAML 태그에는 단일 바인딩 만 포함될 수 있습니다. 중괄호는 나에게 큰 희망을 주었지만 불가능한 것은 다음과 같습니다.

<Element>
  <Element.Tooltip>
    <!-- This won't compile -->
    <TextBlock Text="{Binding Path=PercentageOne}% up, {Binding Path=PercentageTwo}% down"/>
  </Element.Tooltip>
</Element>

Run.Text 속성은 종속성 속성이 아니므로 바인딩 할 수 없습니다.

XAML에서이 형식을 수행 할 수있는 방법이 있습니까?




제가 이것을 과거에 해결 한 방법은 실제로 리스팅에있는 TextBlock을 여러 TextBlocks로 나누는 것입니다. 다음과 같이 시도해보십시오.

<Element>
  <Element.Tooltip>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text="{Binding Path=PercentageOne}"/>
      <TextBlock Text="% up, "/>
      <TextBlock Text="{Binding Path=PercentageTwo}"/>
      <TextBlock Text="% down"/>
    </StackPanel>
  </Element.Tooltip>
</Element>

또는 형식 문자열을 매개 변수로 사용하고 MultiBinding을 사용하여 매개 변수를 전달할 수있는 StringFormatConverter와 같은 것을 만들 수 있습니다. MultiBindings에 대한 링크 :

멀티 바인딩 정보

변환기에 대한 정보는 다음과 같습니다.

변환기 정보

꽤 쉽게 당신이 첫 번째 매개 변수로 "개체 값"대신 "개체 [] 값"을 가져 와서 해당 함수를 Format 함수로 전달하는 변환기를 상상할 수 있습니다.




Links