당신은 각 항목에 사용할 ListBox
에 대한 ItemTemplate
을 지정해야합니다. 그런 다음 해당 템플릿 내에서 TextBlock
속성이 있고 TextWrapping
속성이 Wrap
으로 설정되어 있어야합니다.
그러나 실제 해결해야 할 문제는 처음에 TextBlock
을 그릴 때 필요한 공간으로 확장되는 상황에 빠지게된다는 것입니다. 그러나 그 후에는 크기가 조정되지 않습니다.
크기를 조정할 수있는 부모에게 바인딩하면 (모든 항목이 자동으로 크기가 조정되지는 않는다는 점에 유의하십시오.)) 그런 변경을 할 수 있습니다.
디자인 단계에서 내가 좋아하는 한 가지는 항목의 스타일을 지정하여 스타일을 결정하는 것입니다. 이 예를 들어
<Grid Background="DarkGreen">
<ListBox x:Name="lbChatHistory"
ItemsSource="{StaticResource Orders}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="DarkBlue"
Margin="10">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VerticalAlignment="Bottom" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding CustomerName, FallbackValue=Unknown}"
FontSize="14"
Foreground="White"
TextWrapping="Wrap"
Width="{Binding ElementName=lbChatHistory, Path=ActualWidth}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Background="DarkRed"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
코드는 컨트롤이 확실한 특성을 가진 Orders
의 목록에 바인딩 완전성, 그러나 당신의 데이터는 물론 다릅니다.
<Page.Resources>
<model:Orders x:Key="Orders">
<model:Order CustomerName="Alpha"
OrderId="997"
InProgress="True" />
<model:Order CustomerName="Beta"
OrderId="998"
InProgress="False" />
<model:Order CustomerName="Omega"
OrderId="999"
InProgress="True" />
<model:Order CustomerName="The rain in spain falls mainly"
OrderId="1000"
InProgress="False" />
</model:Orders>
</Page.Resources>
난 당신이 주변 TextBlock의 색상으로 당신의 다음 질문이 필요할 수있다 ListBoxItem HorizontalContentAlignment To Stretch Across Full Width of ListBox 준 대답에 원격으로 유사한이 답변.
이 응답을 보내 주셔서 감사합니다. DataBinding에 대한 다소 새로운 지식으로 인해 한 가지 문제가 있습니다. 제공된 제안 된 ListBox.ItemTemplate을 추가하면 ListBox의 출력이 "Unknown"의 Fallback 값이됩니다. ListBox 자체의 ItemSource 바인딩은 History라는 ObservableCollection이라는 문자열을 가리 킵니다. 그래서 TextBlock 자체의 바인딩을 다른 것으로 변경해야합니까? 내 유일한 추측은 그게 의미가있는 경우 "역사"내에서 "역사"를 찾을 수 없기 때문에 그것이 혼란 스럽다는 것입니다 ... – WannabeCoder
사실, 나는 이것을 알아 냈습니다. 'Text = "{Binding}" '일했다. 내가하는 일이 무엇인지 잘 모르겠다. 그래서 내가보기 엔 새로운 것이지만, 효과가 있었다. – WannabeCoder
@WannabeCoder 바인딩은 바인딩 할 속성이없는 문자열 목록입니다. "바인딩"이라고 말하면 파서에게 현재 제공되는 속성 이름없이'DataContext'를 반영하도록 알려줍니다. 데이터를 얻으려면.예를 들어, 앞으로 타임 스탬프, 글꼴 정보 등의 속성을 가진 실제 인스턴스 객체가있는 곳에서는 속성 이름을 추가해야합니다. 이 목록을 작성하고 바인딩뿐만 아니라 크기 조정 문제를 처리하는 방법을 보여주는 사람이므로 내 게시물을 답으로 표시해주십시오. 고마워 – OmegaMan