Silverlight DataGrid单元格消失

时间:2009-10-23 17:57:38

标签: c# .net silverlight datagrid

我在Silverlight应用程序中有一个DataGrid,其中包含数据。我们的应用程序上还有一个按钮,可以更改布局,以便DataGrid更改宽度。

问题是,当您处于“小”模式并滚动时,对于您看不到的列,其DataGridCell元素将获得Visibility = Collapsed。现在,当您滚动时这很好,但是当DataGrid的大小增加以显示所有列时,它们将保持折叠状态。但是出于某种原因,您始终可以看到第一行中的所有单元格。

这有点像DataGrid控件中的错误。有没有人知道解决它的方法?我已经在DataGrid上为SizeChanged添加了一个处理程序,但是我不太清楚要调用什么来强制它显示那些崩溃的单元格。

编辑:经过一些测试后,我发现它只发生在GridLinesVisibility =“Horizo​​ntal”

XAML(单击将DataGrid的宽度从一半切换为完整):

<StackPanel Orientation="Vertical">
    <data:DataGrid x:Name="testDataGrid" GridLinesVisibility="Horizontal" />
    <Button HorizontalAlignment="Center" Content="Switch Width" Name="switchWidthButton" Click="Button_Click" />
</StackPanel>

更新:虽然有时GridLinesVisibilty未设置,但仍有可能发生。我还没有弄清楚究竟发生了什么情况。

1 个答案:

答案 0 :(得分:0)

在对MS别名进行一些讨论之后,我发现它实际上是DataGrid中的一个错误。我已经给他们发了一个repro项目,所以希望它将来会被修复。在此期间,作为一种变通方法,您可以在DataGrid更改大小时隐藏并重新显示其中一列:

<data:DataGrid x:Name="testDataGrid" GridLinesVisibility="Horizontal" Width="150" SizeChanged="testDataGrid_SizeChanged" />

-

private void testDataGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
    this.testDataGrid.Columns[0].Visibility = Visibility.Collapsed;
    this.testDataGrid.Columns[0].Visibility = Visibility.Visible;
}