2009-10-23 96 views
0

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

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

这味道像DataGrid控件中的错误。有没有人知道解决它的方法?我已经为DataGrid中的SizeChanged添加了一个处理程序,但我不确定要调用什么来强制它显示这些折叠的单元格。

编辑:经过一些测试,我发现它只有GridLinesVisibility = “水平”

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

你可以尝试将XAML提交给你的DataGrid的 - 只是以确保我没有测试错误。 – thomasmartinsen 2009-10-24 07:34:58

回答

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; 
} 
相关问题