我们有一些代码成功地使用Xceed的WPF数据网格v.3.8。当我们更新到他们的v.5.2数据网格时,我们失去了一个功能。我想要做的就是将网格列标题标题包装为两行。我们在列管理器单元上设置了一个ContentTemplate来执行此操作,并且它在应用程序启动时起作用。但是,当您将列标题从屏幕上滚动并返回到视图时,ContentTemplate格式化似乎会丢失。如何在Xceed WPF datagrid单元上设置ContentTemplate?
正如我所说的,相同的代码适用于早期版本的网格。 Xceed不会帮助我们解决这个问题,因为我们在Windows窗体上(这是他们的第一个建议)托管WPF网格。
Xceed datagrid位于.XAML UserControl上。在UserControl.Resources我定义的DataTemplate这样的:
<DataTemplate x:Key="columnManagerCellContentTemplate">
<TextBlock Text="{Binding}" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DataTemplate>
我定义了一个样式为ColumnManagerCell设立ColumnManagerCell加载事件处理程序:
<Style TargetType="{x:Type xcdg:ColumnManagerCell}">
<EventSetter Event="Loaded" Handler="ColumnManagerCell_Loaded"/>
</Style>
而在.XAML.cs文件用户控件我有ColumnManagerCell_Loaded事件处理程序的的ContentTemplate分配给ColumnManagerCells:
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属性(我发现它在那时是“无”),但这并没有改变这种情况。
任何建议表示赞赏。
感谢,
马克