【发布时间】:2012-01-30 19:15:26
【问题描述】:
我正在使用 DataGrid 来显示几个字段,其中一个是多行描述。在我尝试通过设置HeadersVisibility="Column" 来隐藏标题行之前,网格会很好地显示数据。标题行消失了,但是当我滚动行标题时,一些随机行重新出现。
我已将范围缩小到显示多行描述的列。只要我关闭此列,那么我就没有这个问题。我试过用"\r\n" 和"\n" 来分隔这些行,但都不管用。 DataGrid 是否支持多行文本字段?
下面是一张图片,展示了正在发生的事情以及我用来创建网格的 XAML。
<DataGrid DataContext="{StaticResource personRepository}"
ItemsSource="{Binding PersonList, Mode=OneWay}"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserSortColumns="False"
SelectionMode="Extended"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Width="80" Binding="{Binding Id, Mode=OneWay}" />
<DataGridTextColumn Header="First Name" Width="150" Binding="{Binding FirstName, Mode=OneWay}" />
<DataGridTextColumn Header="Last Name" Width="150" Binding="{Binding LastName, Mode=OneWay}" />
<DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description, Mode=OneWay}" />
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
“隐藏标题行”是什么意思? HeadersVisibility = "Column" 是默认值。之前的设置是什么(有效)?如果这是只读的,我会使用 ListView GridView。更多 XAML,但我认为您可以更好地控制格式。对于内容,使用 TextBlock 并为描述设置 Wrap on。
-
默认为 HeadersVisibility=All。标题行很小,但它就在那里。我从 GridView 开始,但列宽不接受“*”符号,因此最后一列将填充剩余空间。
-
您必须在 GridView 中使用 * 转换器。如果您愿意,我会将其发布为答案。
标签: c# .net wpf xaml wpfdatagrid