我们有一些代码成功地使用了 Xceed 的 WPF 数据网格 v.3.8。当我们更新到他们的 v.5.2 数据网格时,我们失去了一项功能。我想要做的就是让网格列标题标题换行成两行。我们在列管理器单元格上设置了一个 ContentTemplate 来执行此操作,它适用于应用程序启动。但是,当您将列标题从屏幕上滚动出来,然后返回到视图中时,ContentTemplate 格式似乎丢失了。
正如我所说,相同的代码适用于早期版本的网格。Xceed 不会帮助我们解决这个问题,因为我们在 Windows 窗体上托管 WPF 网格(这是他们最初的建议)。
Xceed 数据网格位于 .XAML UserControl 上。在 UserControl.Resources 我这样定义 DataTemplate:
<DataTemplate x:Key="columnManagerCellContentTemplate">
<TextBlock Text="{Binding}" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DataTemplate>
我为 ColumnManagerCell 定义了一个 Style 来设置一个 ColumnManagerCell 加载的事件处理程序:
<Style TargetType="{x:Type xcdg:ColumnManagerCell}">
<EventSetter Event="Loaded" Handler="ColumnManagerCell_Loaded"/>
</Style>
在用户控件的 .XAML.cs 文件中,我有将 ContentTemplate 分配给 ColumnManagerCells 的 ColumnManagerCell_Loaded 事件处理程序:
internal void ColumnManagerCell_Loaded(object sender, RoutedEventArgs e)
{
ColumnManagerCell columnManagerCell = sender as ColumnManagerCell;
if (columnManagerCell != null)
{
if (columnManagerCell.ContentTemplate == null)
{
columnManagerCell.ContentTemplate = (DataTemplate)this.FindResource("columnManagerCellContentTemplate");
}
}
}
这是 Xceed 很久以前记录的所有代码。正如我所说,当我启动应用程序时,它可以正确地将长列标题包装成 2 行。但是,当我将列标题滚动出视图然后返回视图时,格式就消失了。
我还可以在 DataTemplate 中设置 TextBlock 的背景颜色,它在启动时起作用,然后在将标题滚动到视野之外后也会消失。
有人对我如何使这些设置保持不变有任何建议吗?我尝试在 TextBlock 上设置 IsVisibleChanged 事件处理程序并重置该处理程序中的 TextWrapping 属性(我看到它当时是“无”),但这并没有改变情况。
任何建议表示赞赏。
谢谢,
标记