0

我有一个应用程序,其中包含多个Grid继承自抽象类的实例,UserControl如下所示:

<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(). 他们中的许多人都可以毫无问题地保存,但是有些网格正在返回一个ActualWidthActualHeight0因此没有保存。我不确定从哪里开始调试这个问题,因为它们都是同一个对象的实例;他们中的一些人有他们的ActualWidthActualHeight设置而其他人没有,怎么可能呢?它们都在应用程序中显示没有问题。

如果您需要更多信息/代码,请告诉我。谢谢!

4

1 回答 1

2

UserControl为了完整起见,我可以通过在捕获它们的屏幕截图之前将这些调用添加到每个调用来解决问题:

scoreGrid.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                scoreGrid.Arrange(new Rect(0, 0, scoreGrid.ScoreGridInstance.DesiredSize.Width, scoreGrid.ScoreGridInstance.DesiredSize.Height));
于 2013-01-25T18:45:53.177 回答