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

v7pvogib  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(182)

我正在为列表框设计数据模板。其中一个数据绑定字段包含很长的说明,我不知道如何确保文本刚好在列表框项目的边缘换行。这是我的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
}

我所要求的是,这是否是我所要实现的正确结构?我希望日期位于项目的右侧。我希望名称位于左上方,并位于名称下方。我可以将描述设置为固定大小,但我希望列表框项目的大小与列表框的大小一致。
我会很感激你能提供的任何帮助...
谢谢您!

ulmd4ohb

ulmd4ohb1#

您的问题与StackPanel有关。
把它移走,换上一个网格。这也是我悲伤的来源。
我做了类似的事情来模仿你的情况,这对我很有效:

<Grid>
    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
       <ListBox.ItemTemplate>
          <DataTemplate>
             <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>
          </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
<Grid>

看这个answer还有这个answer
祝你好运!

pod7payv

pod7payv2#

您已经设置了文本 Package ,剩下的就是设置最大宽度,这样很快;

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

如果你想得到花式与它,你应该是金色的。希望这有帮助,并祝你好运!

相关问题