2012-01-30 44 views
2

我正在爲列表框的數據模板工作。其中一個數據綁定字段包含一個很長的描述,我不知道如何確保文本只是在列表框項的邊緣打包。這是我的XAML代碼...列表框數據模板文本溢出

<ListBox x:Name="lstTest" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <StackPanel Orientation="Vertical"> 
        <Label Content="{Binding Path=Name}"></Label> 
        <TextBlock TextWrapping="Wrap" Text="{Binding Path=Description}"></TextBlock> 
       </StackPanel> 
       <DockPanel LastChildFill="True"> 
        <Label Content="{Binding Path=AuctionDate}"></Label> 
       </DockPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

例題...

new AuctionItem 
{ 
    RecordId = 1, 
    Name = "Auction G", 
    Description = "Morbi eu nisl sed magna vestibulum ultrices quis eu enim. Nunc semper libero at tellus tincidunt eu elementum turpis rhoncus. Mauris condimentum semper pulvinar. Integer vel ante ipsum, at pulvinar sapien. Donec vestibulum ultricies dui sed viverra. Sed a augue diam, et mollis libero. Phasellus eget rutrum nibh.", 
    AuctionDate = DateTime.Now 
} 

我所問的是這甚至對於我試圖達到正確的結構?我希望日期位於該項目的右側。我希望這個名字位於左上角,並且我想要描述這個名字。我可以使描述固定大小,但我希望列表框項目正確調整與列表框的大小。

我將不勝感激任何幫助,你可以提供這個...

謝謝你!

回答

2

你的問題是與StackPanel。

刪除它並用網格替換它。它也是我自己的悲傷之源。

我不喜歡的東西這個模仿您的情況和它的作品對我來說:

看到這個answer。此外answer也是如此。

祝你好運!

1

你已經有了你的textwrapping集,所以剩下的就是一個MaxWidth集,

MaxWidth="Numeric Value" should do it or a MaxWidth="{Binding YourTextBoxBlockName, Path=ActualWidth}" 

如果你想得到它的幻想,你應該是金。希望這會有所幫助,祝你好運!

+0

我需要TextBlock重新調整大小與列表框...如果我設置一個MaxWidth和形式得到最大化的內容將太窄。我試過這個,但它不起作用MaxWidth = {綁定寬度,ElementName = lstTest} ... – Lukasz 2012-01-31 14:25:13

+0

MaxWidth =「{Binding ElementName = IstTest,Path = ActualWidth}」? – 2012-01-31 17:42:30

+0

這種工作,它確實使TextBlock成爲列表框的寬度,但它將AuctionDate字段關閉,因此不再可見。另外,當我最大化窗口它正常工作,但是當我縮小窗口它不會調整項目,直到我嘗試滾動?這對我來說似乎是一種解決方法,而不是解決方案......但是,感謝您的幫助! – Lukasz 2012-02-01 14:47:48