我正在使用DataGrid显示一些日志文件,其中每个单元格都包含一个TextBlock。我需要帮助创建一个方法来扩展用户选择的行这样的:在WPF数据网格中展开行
这是我的代码现在。它是基于点击的行的索引:
DataGridRow testrow = (DataGridRow)logBrowserDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
logBrowserDataGrid.UpdateLayout();
logBrowserDataGrid.ScrollIntoView(logBrowserDataGrid.Items[index]);
testrow = (DataGridRow)logBrowserDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
testrow.Height = 100;
但是这创造了一个怪异的结果:
你知道神的方式来扩大基于索引的行?
你知道我得到的奇怪结果会发生什么吗?它看起来像我正在扩大行的一部分,其余的伸展。我也在运行时研究了它,可以看到它的高度是正确的100,但实际高度仍然是20.
附加信息: 行的默认大小由DataGrid上的.RowHeight属性设置。 我正在使用AutoGenerateColumns功能,并且捕获AutogeneratingColumn事件以用DataGridTemplateColumn替换列。
我喜欢用伪装成一个TextBlock扩展器控制的想法,但是我不知道该怎么做,不破坏扩展的功能 - 我不想文本多次有(如首标和扩展区域中的第一行)。 –
@ChristianOlling当扩展器展开时,您始终可以将标题的可见性设置为折叠状态,而WPF将只加载一个TextBlock或另一个TextBlock。您可以在这里找到WPF控件的默认模板:http://msdn.microsoft.com/en-us/library/aa970773.aspx。我也只是想,也许你可以添加一个'Click'事件到'TextBlock',它将'TextWrapping'设置为'Wrap'或'NoWrap' – Rachel