문제

메시지를 표시하는 WPF ListBox가 있습니다. 여기에는 왼쪽에 아바타가 포함되어 있으며 사용자 이름과 메시지는 아바타 오른쪽에 수직으로 쌓여 있습니다. 레이아웃은 메시지 텍스트가 Word Wrap이어야 할 때까지 괜찮지 만 대신 ListBox에 수평 스크롤 막대가 나타납니다.

나는 유사한 문제에 대한 솔루션을 찾아서 찾았지만 그중 어느 것도 효과가 없었습니다.

<ListBox HorizontalContentAlignment="Stretch"  ItemsSource="{Binding Path=FriendsTimeline}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Border BorderBrush="DarkBlue" BorderThickness="3" CornerRadius="2" Margin="3" >
                    <Image Height="32" Width="32"  Source="{Binding Path=User.ProfileImageUrl}"/>
                </Border>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding Path=User.UserName}"/>
                    <TextBlock Text="{Binding Path=Text}" TextWrapping="WrapWithOverflow"/> <!-- This is the textblock I'm having issues with. -->
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
도움이 되었습니까?

해결책

내용 TextBlock 속성을 사용하여 포장 할 수 있습니다 TextWrapping. 대신에 StackPanel, 사용 DockPanel/Grid. 한 가지 더 - 세트 ScrollViewer.HorizontalScrollBarVisibility 속성 Disabled 에 대한 가치 ListBox.

업데이트되었습니다 Hidden 에게 Disabled Matt의 의견을 기반으로합니다. 감사합니다 Matt.

다른 팁

문제는 ListBox에 없을 수 있습니다. 부모 컨트롤 중 하나가 충분한 공간을 제공하여 포장 할 필요가 없도록 텍스트 블록이 랩되지 않습니다. 이것은 스크롤 뷰어 제어로 인해 발생할 수 있습니다.

TextBlock이 성장하는 것을 방지하고 ListBox의 크기에 맞는 경우 너비의 너비를 명시 적으로 설정해야합니다.

동적으로 변경하려면 고정 값이 아니지만 시각적 트리의 적절한 부모 요소에 바인딩해야합니다. 다음과 같은 것을 가질 수 있습니다.

<ListBox ItemsSource="{Binding MyItems}" Name="MyListBox">

  <ListBox.Resources>
    <Style TargetType="ListBoxItem">
      <Setter Property="Width" 
              Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ScrollContentPresenter}, Path=ActualWidth}" />
    </Style>
  </ListBox.Resources>

  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Title}" TextWrapping="Wrap" />
    </DataTemplate>
  </ListBox.ItemTemplate>

</ListBox>

작동하지 않으면 적절한 요소를 찾으십시오. 라이브 비주얼 트리 Visual Studio에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top