use*_*676 1 wpf xaml listbox textblock
我有一个包含 TextBlocks 的 ListBox。
有时 TextBlock 的内容太长,我希望此条目的高度根据需要增加一倍或三倍以容纳文本。
我试过 TextWrapping="Wrap" 但它不起作用。每个 TextBlock 仍然只有一行高度。
有没有一种简单的方法可以解决 XAML 中的问题?谢谢。
*附加信息:我试图简化问题,但也许完整的场景更好。
这是我的 XAML:
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock MinWidth="40" TextAlignment="Right" Text = "{Binding ProductPrice}" />
<TextBlock Text = "{Binding ProductName}" TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
禁用列表框水平scrollViewer。这种方式textBlock将被迫换行。
XAML:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<TextBlock TextWrapping="Wrap"/>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
结果示例:

编辑:
从您添加的 XAML 中,我相信问题出在StackPanel. 尝试将其替换Grid为例如:
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock MinWidth="40" TextAlignment="Right" Text = "{Binding ProductPrice}" />
<TextBlock Grid.Column="1" Text = "{Binding ProductName}" TextWrapping="Wrap" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
StackPanel不限制内容大小,因此textBlock不知道空间在哪里结束,并且不会发生换行。
| 归档时间: |
|
| 查看次数: |
5138 次 |
| 最近记录: |