[英]XAML TextBlock: How to make TextBlock have variable height?
我有一个包含TextBlocks的列表框。
有时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>
禁用列表框水平scrollViewer
。 这样, textBlock
将被强制换行。
XAML:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<TextBlock TextWrapping="Wrap"/>
</ListBox>
结果示例:
编辑:
从您添加的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>
StackPanel
不会限制内容的大小,因此textBlock
不知道空格在哪里结束,并且不会发生换行。
这将帮助您做到这一点。 不要尺寸的TextBlock
只是大小滚动浏览器,因为texblock必须是变量,这样ScrollViewer
将适用Scrollbar
一旦超出规模ScrollViewer
。
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<TextBlock/>
</ScrollViewer>
对于ListBoxItem
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.Items>
<TextBlock Text="{Binding LongText}" TextWrapping="Wrap"/>
</ListBox.Items>
</ListBox>
您正在使用StackPanel
。 尝试使用DockPanel
:
<DockPanel>
<TextBlock DockPanel.Dock="Left" MinWidth ="40" TextAlignment="Right" Text = "11.12" />
<TextBlock Text = "{Binding LongText}" DockPanel.Dock="Right" TextWrapping="Wrap" />
</DockPanel>
例如:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.