Wpf 列表框数据模板文本溢出

Wpf 列表框数据模板文本溢出,wpf,xaml,Wpf,Xaml,我正在为列表框制作数据模板。其中一个数据绑定字段包含很长的描述,我不知道如何确保文本仅包装在列表框项的边缘。这是我的xaml代码 <ListBox x:Name="lstTest" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplate> <DataTemplate>

我正在为列表框制作数据模板。其中一个数据绑定字段包含很长的描述,我不知道如何确保文本仅包装在列表框项的边缘。这是我的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>
我想问的是,这甚至是我试图实现的目标的正确结构吗?我希望日期在项目的右边。我希望名字在左上角,在名字下面我希望描述。我可以使描述固定大小,但我希望列表框项目与列表框一起正确调整大小

我将非常感谢您在这方面提供的任何帮助


谢谢大家!

您已经有了textwrapping设置,所以剩下的就是一个MaxWidth设置,非常快

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

如果你想喜欢它,你应该是金色的。希望这有帮助,祝你好运

您的问题在于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>

看这个。还有这个


祝你好运

我需要用列表框重新调整文本块的大小。。。如果我设置了MaxWidth,并且表单被最大化,那么内容就会太窄。我尝试了这个方法,但它不起作用MaxWidth={Binding Width,ElementName=lstTest}…MaxWidth=“{Binding ElementName=IstTest,Path=ActualWidth}”怎么样?这种方法起作用了,它确实使文本块成为列表框的宽度,但它将AuctionDate字段推开,使其不再可见。此外,当我最大化窗口时,它可以正常工作,但当我缩小窗口时,它不会调整项目大小,直到我尝试滚动?对我来说,这似乎是一个解决办法,而不是一个解决方案。。。但是谢谢你的帮助!
<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>