我有一个应用程序,其中包含一个Grid
的实例,它继承自扩展UserControl
的Abstract类,如下所示:
<abstract:ScoringGrid x:Class="ReadProject.Repeater.ScoringGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:abstract="clr-namespace:ReadProject.AbstractRepeater"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid x:Name="ScoringGridInstance" Width="Auto" Height="Auto">
....
和他们继承的类(这是一个非常基本的类,只有几个方法和属性):
public abstract partial class ScoringGrid : UserControl, INotifyPropertyChanged
{...
这些网格是在运行时动态构建的,每个网格的大小可能不同。当用户关闭应用程序时,我想捕获每个Grid
的屏幕截图并将其保存到本地计算机。为此,我创建了一个方法来获取对象大小并使用RenderTargetBitmap()
将其保存到文件中。其中很多都保存没有问题,但有些网格返回ActualWidth
和ActualHeight
0
,因此无法保存。我不确定从哪里开始调试这个问题,因为它们都是同一个对象的实例;他们中的一些人如何设置ActualWidth
和ActualHeight
而其他人没有设置?它们都在应用程序中显示没有问题。
如果您需要更多信息/代码,请与我们联系。谢谢!
答案 0 :(得分:2)
为了完整起见,我可以通过在捕获每个UserControl
的屏幕截图之前添加这些调用来解决此问题:
scoreGrid.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
scoreGrid.Arrange(new Rect(0, 0, scoreGrid.ScoreGridInstance.DesiredSize.Width, scoreGrid.ScoreGridInstance.DesiredSize.Height));