2012-01-30 43 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