当前位置: 首页 > 知识库问答 >
问题:

在文本块列中使用换行符时,数据网格高度太高

公冶才
2023-03-14

我希望用一列表示相当长的文本值来创建数据网格。因此,我的目标功能是:

  • 列宽度与剩余窗口空间一样宽(窗口可以重新调整大小)
  • 必要时换行文本
  • 将数据网格高度限制为窗口的剩余高度,并根据需要提供垂直滚动

下面的代码满足前两项的要求,并提供了一个正常运行的垂直滚动条,但数据网格的高度对于显示的内容来说太高了。从文本块中删除自动换行可以修复此问题。。。但我需要文字包装。

如何保持自动换行功能而不使数据网格高度过大?

<ScrollViewer VerticalScrollBarVisibility="Auto">
   <Grid>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="Auto" />
         <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
         <RowDefinition Height="Auto" />
         <RowDefinition Height="Auto" />
      </Grid.RowDefinitions>
      <!-- other controls in different parts of the data grid -->
      <DataGrid Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left"
         Margin="0,6,6,6" Name="dgMessages" VerticalAlignment="Top" 
         Background="DarkGray" HeadersVisibility="None"
         AlternatingRowBackground="Gainsboro" CanUserResizeColumns="False"
         CanUserResizeRows="False" CanUserSortColumns="False" 
         AutoGenerateColumns="false" BorderBrush="Black" HorizontalGridLinesBrush="{x:Null}"
         ItemsSource="{Binding Messages, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
             <DataGrid.Columns>
                 <dg:DataGridTemplateColumn Width="*">
                     <dg:DataGridTemplateColumn.CellTemplate>
                         <DataTemplate>
                             <TextBlock Text="{Binding Value}" 
                                TextWrapping="WrapWithOverflow" 
                                Padding="5,5,5,5" />
                         </DataTemplate>
                     </dg:DataGridTemplateColumn.CellTemplate>
                 </dg:DataGridTemplateColumn>
             </DataGrid.Columns>
         </DataGrid>
     </Grid>
 </ScrollViewer>

“dg”命名空间为http://schemas.microsoft.com/winfx/2006/xaml/presentation“”

共有1个答案

云卓
2023-03-14

删除滚动查看器并将包含数据网格的行的高度设置为“*”已修复此问题。当数据网格不在自动调整大小为内容的行中时,正常处理数据网格列中的包装文本。

这是结束代码:

<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="*"/>
   </Grid.ColumnDefinitions>
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
   </Grid.RowDefinitions>
   <!-- other controls in different parts of the data grid -->
   <DataGrid Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left"
      Margin="0,6,6,6" Name="dgMessages" VerticalAlignment="Top" 
      Background="DarkGray" HeadersVisibility="None"
      AlternatingRowBackground="Gainsboro" CanUserResizeColumns="False"
      CanUserResizeRows="False" CanUserSortColumns="False" 
      AutoGenerateColumns="false" BorderBrush="Black" HorizontalGridLinesBrush="{x:Null}"
      ItemsSource="{Binding Messages, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
      <DataGrid.Columns>
         <dg:DataGridTemplateColumn Width="*">
            <dg:DataGridTemplateColumn.CellTemplate>
               <DataTemplate>
                  <TextBlock Text="{Binding Value}" TextWrapping="WrapWithOverflow" Padding="5,5,5,5" />
               </DataTemplate>
            </dg:DataGridTemplateColumn.CellTemplate>
         </dg:DataGridTemplateColumn>
      </DataGrid.Columns>
   </DataGrid>
</Grid>
 类似资料:
  • 我需要制作瓦丁8网格单元格文本换行。我试着在瓦丁论坛上关注这个链接。https://vaadin.com/forum/thread/16908210/vaadin-8-grid-wrap-long-lines 我的网格仅在每个单元格中包含字符串。 我有一个这样的风格生成器类: 我正在从Vaadin 6转换,所以我仍然使用旧主题() 在我的styles.css文件中,有: 在创建网格的类中,我有:

  • 我对css网格有一个问题,我用css网格构建了一个包含两个div容器,我想把容器调整到页面中心。我使用以下代码: null null 如您所见,当网格容器高度大于页面高度时,就会出现问题(请参阅代码结果)。当使用高度为主体标签,网格高度溢出和当删除高度从主体标签,一切都是可以的,但在这个原位容器不能调整在页面中心的容器。什么是问题?

  • 我目前正在做一个项目,我找不到任何解决方案。我希望Gridpane行的高度从该行中一个特定列的宽度动态计算。整个Gridpane必须可调整大小,其余可用空间应位于下面的另一行,以便根据该单元格内的元素保留该单元格的纵横比。孩子们,有什么想法吗? 我希望单元格1,0和1,1可以调整大小,并且通过增加其宽度,可以清楚地看到第0行和第1行的高度不应该平均增加。如果还剩下任何高度,我希望第3行可以承受,因

  • 有一个有趣的游戏叫一个人游戏。它在网格上播放。每个网格单元格中都有一个非负整数。你从0分开始。不能输入含有整数0的单元格。你可以在你想要的任何单元格开始和结束游戏(当然单元格中的数字不能是0)。在每一步中,您可以向上、向下、向左和向右移动到相邻的网格单元格。你最后能得到的分数是你路径上的数字之和。但每个单元格最多只能输入一次。 游戏的目的是让你的分数尽可能高。 输入: 第一行输入是一个整数测试用例

  • pre { white-space: pre-wrap; } 本实例演示如何转换表格(table)为数据网格(datagrid)。 数据网格(datagrid)的列信息是定义在 <thead> 标记中,数据是定义在 <tbody> 标记中。确保为所有的数据列设置 field 名称,请看下面的实例:     <table id="tt">         <thead>             <

  • 问题内容: 如您在这张图片中看到的 将根据文本长度它的高度的变化,我想让它根据文本长度调节它的高度。 *我看到了其他问题,但是那里的解决方案对我没有用 问题答案: 这个 作品 对我来说,所有其他解决方案都没有。 在Swift 4中,的语法已更改为。