2011-01-04 3 views
1

위치 판독 값이 매우 간단합니다. 스타일이 적용된 TextBlock 일뿐입니다. 그래서 (이보다 더 많은 속성이 있습니다,하지만 간결하게 그들을했다) 좋아하는 스타일, 난 그냥 설정 :WPF에서 숫자 디스플레이 패딩

<Style x:Key="NumberStyle" TargetType="{x:Type TextBlock}"> 
     <Setter Property="TextAlignment" Value="Center" /> 
    </Style> 

지금, 나는이 스타일을 사용하여 하나의 디스플레이를 가지고 있고, 그것은 표시됩니다 0.0에서 30000.0 사이의 숫자입니다. 문제는 내가 텍스트 중심에 있기 때문에 숫자가 (급격하게 변화하는 경우) 숫자가 그 곳으로 점프하고 조금 불안해한다는 것이다. 내 문자열을 형식화하여 그렇게하지 않도록하고 싶습니다.

나는 XAML에서이 ConverterParameter 시도 :

ConverterParameter='\{0:00000.0\}' 

를하고 제대로 패딩을 수행하는 동안, 나는 00032.5 같은 번호를 얻을 것이다. 그런 다음 0#으로 바꿨지 만 결국 {0:0.0}처럼 작동합니다. 나는 MSDN docs을보고 도와 줄만한 다른 것을 보지 못했습니다.

내가 할 수있는 유일한 일은 이렇게하기 위해 새로운 IValueConverter를 작성해야한다는 것입니다. 다시 말해 Convert() 메서드에서 parameter을 가져 와서 내 자신의 특수 문자로 파싱해야합니다. 그리고 이것을 발견하면 빠진 숫자를 공백으로 대체하십시오.

그러나 실제로 여기서 배우려고하는 것은 내가 알지 못하는 형식 문자열에서 다른 문자를 사용하여이 작업을 수행 할 수 있습니까?

답변

1

10 문자의 필드로 {}{0,10:#,0}을 시도하십시오.

그러나 글꼴이 고정 너비가 아니면 이상한 결과가 나옵니다. 내가 Kaxaml에서 그것을 시도하고, 작동하지만 텍스트 비례 글꼴과 일치하지 않습니다.

+0

앞에 {무엇이 있는지 확실하지 않습니다. 나는 오타라고 가정합니다. 컴파일러 오류가 발생하기 때문에 ... – Dave

+4

'{'문자가 새 태그 확장을 시작하는 WPF Binding 태그 확장에서 형식 매개 변수를 이스케이프합니다. 나는 당신이 마크 업 확장에서 이것을 사용하고 있다고 생각했다. 그렇지 않다면 그냥 제거하십시오. – codekaizen

3

나는 {0,7}과 같은 것이 필요하다고 생각합니다. (7 개 위치에 표시 인수가 있으며, 왼쪽 공백으로 채 웁니다.) 그러나이 경우에도 텍스트를 점프하지 않으려면 고정 폭 글꼴 또는 숫자의 너비와 동일한 공백 문자 폭을 가진 글꼴을 사용해야합니다.