拍摄完整数据网格的图像

时间:2012-12-07 09:05:45

标签: silverlight datagrid silverlight-4.0

我有:

<Grid>
 <Grid.RowDefinitions>
   <RowDefinition></RowDefinition>
 </Grid.RowDefinitions>

 <sdk:DataGrid Grid.Row="0" ...>
 ...
 </sdk:DataGrid>

</Grid>

请注意,行定义中没有Height="Auto",因此datagrid占用所有高度。 我正在尝试制作完整数据网格的图片(包括需要滚动的不可见空间)。我试过了:

ImageExtensions.ToImage(myDataGrid);

var writeableBitmap = new WriteableBitmap(pixelWidth, pixelHeight);

其中pixelHeight是使用SizeChanged事件或DesiredSize属性获得的。

一切都是徒劳的。高度始终是屏幕的高度。如果我在行定义中使用auto =“height”那么它会起作用,但是当datagrid太大时,datagrid不会占用所有空格/或没有滚动条。

有人设法让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

解决方法:

GridLength h = grid.RowDefinitions[0].Height;

grid.RowDefinitions[0].Height = GridLength.Auto;
grid.UpdateLayout();


try
{
    var writeableBitmap = new WriteableBitmap((int)myDataGrid.ActualWidth, (int)myDataGrid.ActualHeight);
}
finally
{
    grid.RowDefinitions[0].Height = h;
    grid.UpdateLayout();
}