2010-03-08 5 views
2

목록 상자가있는 그룹 상자 내에서 ListboxItems도 XAML에 정의되어 있습니다. 나는 ScrollViewer에 설정 내가 수평 스크롤을 얻을 제거하면WPF 목록 상자 가로 스크롤

<ListViewItem > 
    <CheckBox Name="chkAlbanien" Tag="55"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="images/flag_albania.png" Height="30"></Image> 
     <TextBlock Text="Albanien" Margin="5,0,0,0"></TextBlock> 
    </StackPanel> 
    </CheckBox> 
</ListViewItem> 

과 항목이 잘 포맷 - 올바른 폭 :

<ListBox Name="lvAvoidCountry" Margin="5,5,5,5" 
    Background="Transparent" 
    ScrollViewer.VerticalScrollBarVisibility="Visible" 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled" > 

항목은 다음과 같이 정의된다 : 목록 상자가 정의됩니다. scrollviewer 설정을 사용하면 항목이 잘려서 모든 항목이 목록 상자에 배치됩니다. (예 : 플래그가 표시되면 체크 상자가 표시되지만 텍스트는 "Alba"입니다).

어떤 힌트를 주셔서 감사합니다!

+0

그리고 달성하고자하는 것은 무엇입니까? 가로 스크롤 막대 가시성을 비활성화로 설정하면 이것이 정상적인 결과 인 것 같습니다. 또는 나는 무엇인가 놓치고 있냐? – Timores

+0

세로 스크롤을 원합니다. – JerryVienna

답변

3

이름에서 알 수 있듯이 ScrollViewer.HorizontalScrollBarVisibility="Disabled"은 가로 스크롤을 비활성화합니다. 그렇게하면 ListBoxItems가 너무 길어지면 차단됩니다. StackPanel은 ListBox에 맞게 늘어나거나 줄어들지 않으며 TextBlock에 TextWrapping을 추가하더라도 목록이 너무 좁은 경우 ListBox에 맞게 항목을 "포장"하지 않습니다. 그것은 매우 고집 스럽습니다. 귀하의 주요 문제는 StackPanel이라고 생각합니다. 대신 StackPanel에의

,과 같이 정의 2 열이있는 그리드를 사용해보십시오 :

<ListViewItem > 
    <CheckBox Name="chkAlbanien" Tag="55"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Image Grid.Column="0" Source="images/flag_albania.png" Height="30"/> 
     <TextBlock Grid.Column="1" 
        TextWrapping="Wrap" 
        Text="Albanien" Margin="5,0,0,0"/> 
    </Grid> 
    </CheckBox> 
</ListViewItem> 

Auto 것 "수축 포장"이미지 열 및 * 텍스트 모든 나머지 공간을 제공 할 것입니다. 그런 다음 너무 길면 TextWrapping을 텍스트 블록에 추가하십시오.

편집 : 더 완전한 코드 예제를 추가하고 약간 대답을 변경했습니다.

+0

안녕하세요, 답변 주셔서 감사합니다. - 목록 상자를 다음과 같이 표시하고 싶습니다. | ======================================================================================================================= | x 1 x 2 x 3 x 4 x 5 | | x 6 x 7 x 8 x 9 x 10 | 그러나 현재 "x 6 및 x 7"은 오른쪽으로 수평으로 "- 그립니다"- 시야에서 벗어나 "x 8"로 다음 행을 시작합니다. 눈에 보이는 너비를 사용하여 항목을 "그려"수직으로 스크롤 할 수있게하려는 경우 ... ColumDefinitions에서 항목이 하나만있는 열을 얻을 것이라고 생각합니다. – JerryVienna

+0

그래서 원하지 않습니다. 세로로 쌓인 한 줄당 하나의 목록 상자 항목 ... 목록 상자 항목을 가로로 배열하여 텍스트처럼 "흐르게"할까요? (죄송합니다. 원하는 것을 시각화하는 데 어려움을 겪고 있습니다. 다이어그램을 그리고 질문에 추가 할 수 있다면 도움이 될 것입니다.) –

0

목록 상자에서 수직 스크롤을 원하면 스택 패널에 배치하지 말고 그리드를 사용하십시오.