Wpf XAML TextBlock:如何使TextBlock具有可变高度?
我有一个包含文本块的列表框 有时文本块的内容太长,我希望根据需要将该条目的高度设置为两倍或三倍,以容纳文本 我试过TextWrapping=“Wrap”,但不起作用。每个文本块的高度仍然只有一行 有没有一种简单的方法可以解决XAML中的问题?谢谢 *附加信息:我试图简化问题,但完整的场景可能更好Wpf XAML TextBlock:如何使TextBlock具有可变高度?,wpf,xaml,listbox,textblock,Wpf,Xaml,Listbox,Textblock,我有一个包含文本块的列表框 有时文本块的内容太长,我希望根据需要将该条目的高度设置为两倍或三倍,以容纳文本 我试过TextWrapping=“Wrap”,但不起作用。每个文本块的高度仍然只有一行 有没有一种简单的方法可以解决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>
这将帮助您做到这一点。不要调整
TextBlock
的大小,只需调整滚动查看器的大小,因为texblock需要可变,因此ScrollViewer
一旦超出ScrollViewer
的大小,就会应用Scrollbar
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<TextBlock/>
</ScrollViewer>
对于ListBoxItem
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.Items>
<TextBlock Text="{Binding LongText}" TextWrapping="Wrap"/>
</ListBox.Items>
</ListBox>
这将帮助您做到这一点。不要调整
TextBlock
的大小,只需调整滚动查看器的大小,因为texblock需要可变,因此ScrollViewer
一旦超出ScrollViewer
的大小,就会应用Scrollbar
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<TextBlock/>
</ScrollViewer>
对于ListBoxItem
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.Items>
<TextBlock Text="{Binding LongText}" TextWrapping="Wrap"/>
</ListBox.Items>
</ListBox>
禁用列表框水平
scrollViewer
。这样,textBlock
将被强制换行
XAML:
StackPanel
不限制内容大小,因此textBlock
不知道空格的结束位置,也不会进行换行。禁用列表框水平滚动查看器
。这样,textBlock
将被强制换行
XAML:
StackPanel
不限制内容大小,因此textBlock
不知道空格的终点,也不会进行换行。您使用的是StackPanel
。尝试使用DockPanel
:
<DockPanel>
<TextBlock DockPanel.Dock="Left" MinWidth ="40" TextAlignment="Right" Text = "11.12" />
<TextBlock Text = "{Binding LongText}" DockPanel.Dock="Right" TextWrapping="Wrap" />
</DockPanel>
例如:
您正在使用的是
StackPanel
。尝试使用DockPanel
:
<DockPanel>
<TextBlock DockPanel.Dock="Left" MinWidth ="40" TextAlignment="Right" Text = "11.12" />
<TextBlock Text = "{Binding LongText}" DockPanel.Dock="Right" TextWrapping="Wrap" />
</DockPanel>
例如:
感谢您提供使用水平滚动条的选项。但我不想水平滚动。我希望每个列表框项目的高度能够自动调整以适应文本。感谢您提供使用水平滚动条的选项。但我不想水平滚动。我想自动调整每个列表框项目的高度以适应文本。我尝试了这个方法,但对我无效。实际上,列表框没有水平滚动条,因此使水平滚动条不可见并不会改变任何东西。@user776676:能否将XAML添加到问题中?找到问题会更容易。谢谢,Michael,我刚刚添加了XAML。@user776676:请查看我的编辑。我会在一分钟内添加完整的xaml。我尝试过这个,但它对我不起作用。实际上,列表框没有水平滚动条,因此使水平滚动条不可见并不会改变任何东西。@user776676:能否将XAML添加到问题中?找到问题会更容易。谢谢,Michael,我刚刚添加了XAML。@user776676:请查看我的编辑。我将在一分钟内添加完整的xaml。