繁体   English   中英

XAML TextBlock:如何使TextBlock具有可变的高度?

[英]XAML TextBlock: How to make TextBlock have variable height?

我有一个包含TextBlocks的列表框。

有时TextBlock的内容太长,我希望该条目的高度根据需要容纳文本以加倍或增加三倍。

我尝试了TextWrapping =“ Wrap”,但是它不起作用。 每个TextBlock的高度仍然只有一行。

有没有简单的方法可以解决XAML中的问题? 谢谢。

*其他信息:我试图简化问题,但也许完整的方案更好。

  1. 我有一个列表框,其条目根据以下代码中的模板显示。
  2. 每个条目都有2条信息:产品价格和产品名称。
  3. 我不想使用列表框中的水平滚动条,并希望在必要时以2行或更多行显示产品名称。 产品名称是第二个TextBlock。

这是我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM