列表框数据模板文本溢出

时间:2012-01-30 22:07:14

标签: wpf xaml

我正在处理列表框的数据模板。其中一个数据绑定字段包含很长的描述,我不知道如何确保文本只包含在列表框项的边缘。这是我的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 个答案:

答案 0 :(得分:2)

你的问题在于StackPanel。

将其取下并用网格替换。这也是我自己悲伤的根源。

我做了类似的事情来模仿你的情况,这对我有用:

<Grid>
    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding RecordID}" />
                <TextBlock Grid.Column="1" Text="{Binding Description}" TextWrapping="Wrap" />
                <TextBlock Grid.Colunm="2" Text="{Binding AuctionDate}" />
            </Grid>
        </ListBox.ItemTemplate>
    </ListBox>
<Grid>

answer。还有answer

祝你好运!

答案 1 :(得分:1)

你已经有了你的文本包装设置,所以剩下的就是MaxWidth设置,所以快速;

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

如果你想看中它并且你应该是金色的。希望这有帮助,祝你好运!