0

次のようGridに拡張されたAbstractクラスから継承するのいくつかのインスタンスを含むアプリケーションがあります。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()。それらの多くは問題なく保存されますが、一部のグリッドはActualWidthand ActualHeightof0を返しているため、保存されていません。これらはすべて同じ正確なオブジェクトのインスタンスであるため、この問題のデバッグをどこから開始すればよいかわかりません。どうしてそれらのいくつかがそれらを持っていて、他のものが持っていない可能性がActualWidthありActualHeightますか?これらはすべて、アプリケーションで問題なく表示されます。

さらに情報/コードが必要な場合はお知らせください。ありがとう!

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 に答える