2012-06-27 3 views
2

목록 상자에 값을 바인딩하고 있지만 문자열이 적절한 형식으로 표시되지 않습니다.목록 상자의 문자열을 어떻게 정당화합니까?

abc    10 
abcd    20 
asdfas   30 

같은

전 내 문자열은 그

abc  10 
abcd  20 
asdfas   30 

같은 패딩을

str1.PadRight(30) + str2.PadRight(2) 

다음 또한 내가 점점 오전 값을 사용하여 30 첫 번째 문자열에 고정 된 길이를 바랍니다했다 문자열 사이에 같은 공백을 넣을 수있는 방법을 제안하십시오.

+3

하나의 문제는 당신이 아마 사용하지 않는 것입니다 고정 폭 글꼴. –

+0

ListBox의 Font 속성을 FixedSys로 설정합니다. – Steve

+0

예, 고정 폭 글꼴을 사용하거나 다중 열 목록보기 또는 표 컨트롤을 대신 사용하십시오. –

답변

2

Windows 사용자 인터페이스는 일반적으로 가변 폭 글꼴을 사용하므로 주어진 열에 공백을 추가하여 텍스트를 정렬 할 수 없습니다.

monospaced 글꼴 (예 : Courier 또는 Lucida Console)을 사용하거나, 열을 지원하는 ListView (또는 유사한)를 사용하거나, 소유자가 그린 항목을 구현하여 해당 항목의 모양을 제어 할 수 있도록 설정해야합니다. 항목이 표시되고 텍스트를 분할하여 열로 그립니다.

0

Windows Forms ListBox은 여러 열을 지원합니다. constructor 설명서의 예제가 있습니다.

데이터 바인딩에서는 작동하지 않을 수도 있지만. 어떤 경우에는 대신 ListView을 사용해야 할 것입니다.

0

내가 텍스트와 숫자 랩하는 ViewModel을 만들 것입니다 :

class MyViewModel 
{ 
    public string Text { get; set; } 
    public int Number { get; set; } 
} 

그런 다음 레이아웃 않는 ListBoxItemTemplate 제공 :

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <DockPanel> 
       <TextBlock DockPanel.Dock="Left" 
          Text="{Binding Text}"/> 
       <TextBlock DockPanel.Dock="Right" 
          Text="{Binding Number}"/> 
      </DockPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox>