텍스트 블록을 WPF ListBox로 강제 랩하다
메시지를 표시하는 WPF 목록 상자가 있습니다.왼쪽에는 아바타가, 오른쪽에는 사용자 이름과 메시지가 세로로 쌓여 있습니다.메시지 텍스트가 줄바꿈될 때까지 레이아웃은 정상이지만 목록 상자에 가로 스크롤 막대가 표시됩니다.
구글을 검색해서 비슷한 문제에 대한 해결책을 찾았지만, 어느 것도 효과가 없었습니다.
<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
맷의 코멘트에 근거하고 있습니다.고마워요 매트
이 문제는 ListBox에서 발견되지 않을 수 있습니다.부모 컨트롤 중 하나가 충분한 공간을 제공하여 줄 필요가 없는 경우 텍스트 블록은 줄바꿈되지 않습니다.ScrollViewer 컨트롤이 원인일 수 있습니다.
텍스트 블록이 커지는 것을 방지하고 목록 상자의 크기에 맞게 하려면 텍스트 블록의 너비를 명시적으로 설정해야 합니다.
동적으로 변경하려면 고정 값이 아니라 시각적 트리의 적절한 상위 요소에 바인딩해야 합니다.다음과 같은 것을 사용할 수 있습니다.
<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 의 Live Visual Tree 를 사용해 적절한 요소(무엇에 바인드 할 필요가 있는지)를 찾습니다.
언급URL : https://stackoverflow.com/questions/397257/force-textblock-to-wrap-in-wpf-listbox
'sourcecode' 카테고리의 다른 글
내 Objective-C 싱글톤은 어떤 모습이어야 할까요? (0) | 2023.04.19 |
---|---|
WPF에서 GridViewColumn 데이터를 자동 조정하고 오른쪽 정렬하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
간접 확장이란 무엇입니까?${!var*}의 의미는 무엇입니까? (0) | 2023.04.14 |
Linux, DST-safe에서 bash로 어제 날짜 가져오기 (0) | 2023.04.14 |
새로운 행의 패턴을 grep로 지정하는 방법은 무엇입니까? (0) | 2023.04.14 |