【发布时间】:2012-06-07 02:56:51
【问题描述】:
我希望用一列表示相当长的文本值来制作数据网格。所以我的目标功能是:
- 列宽与剩余窗口空间一样宽(窗口可以调整大小)
- 必要时自动换行
- 将数据网格高度限制为窗口的剩余高度,并根据需要提供垂直滚动
以下代码符合前两项并提供了一个正常工作的垂直滚动条,但数据网格高度对于它所显示的内容来说太高了。从文本块中删除自动换行可以解决这个问题……但我需要自动换行。
如何保持自动换行功能而不会使数据网格高度过高?
<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”
【问题讨论】:
-
在浏览器中做一个查看源代码并将代码粘贴到这里,这样我们就可以查看生成的HTML了。
-
我不认为我可以这样做,因为这是一个 WPF 桌面项目,所以没有使用浏览器。无论如何,我环顾四周以确定并没有找到任何生成的 HTML。我误会你了吗?
标签: wpf xaml datagrid height word-wrap