我在Silverlight应用程序中有一个DataGrid,其中包含数据。我们的应用程序上还有一个按钮,可以更改布局,以便DataGrid更改宽度。
问题是,当您处于“小”模式并滚动时,对于您看不到的列,其DataGridCell元素将获得Visibility = Collapsed。现在,当您滚动时这很好,但是当DataGrid的大小增加以显示所有列时,它们将保持折叠状态。但是出于某种原因,您始终可以看到第一行中的所有单元格。
这有点像DataGrid控件中的错误。有没有人知道解决它的方法?我已经在DataGrid上为SizeChanged添加了一个处理程序,但是我不太清楚要调用什么来强制它显示那些崩溃的单元格。
编辑:经过一些测试后,我发现它只发生在GridLinesVisibility =“Horizontal”
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
未设置,但仍有可能发生。我还没有弄清楚究竟发生了什么情况。
答案 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;
}