1

内部に画像があるビューボックスがあります:

<Viewbox MaxHeight="100" MaxWidth="100" x:Name="Scenario4ImageContainer2" Stretch="Uniform" Grid.Column="1" Grid.Row="1">
    <Image x:Name="Scenario4Image" PointerPressed="Scenario4Image_PointerPressed" HorizontalAlignment="Stretch"  />
</Viewbox>

実際の幅/高さの値を取得できるようにしたいのですが、バックエンド C# でこれを試すと、次のようになります。

int w = (int)Scenario4ImageContainer.Width

パラメータが正しくないというエラーが表示されます。

幅をハードコードするとこれはなくなりますが、動的にサイズを変更したいのです。

Scenario4ImageContainer.ActualWidth も取得しようとしましたが、このパラメーターも「正しくありません」でした。

4

3 に答える 3

1

処理する必要があるイベントを見つけたようです。ImageOpenedイベントを処理する必要があります。これは、画像が非同期に取得され、他のイベントを処理しようとすると、その時点で画像が読み込まれない可能性が高く、実際のサイズがゼロになるためです。

于 2013-02-27T05:04:26.257 に答える
1

しばらく前に、弦の幅を測定しようとしていました。ディメンションを取得するために、同様のメカニズムを試すことができます。

http://invokeit.wordpress.com/2012/09/19/how-to-measure-rendered-string-dimensions-in-win8dev/

this.tb.FontSize = 20;
this.tb.Measire(new Size(400, 300)); // assuming that 400x300 is max size of textblock you want
double currentWidth = this.tb.DesiredSize.Width;
double currentHeight = this.tb.DesiredSize.Height;
于 2013-02-25T13:17:10.240 に答える
0

描画するたびに、コンテナのサイズが変更されているかどうかを簡単に確認します(最初に0を初期化して、最初にキャッチされることを確認します)。

if (containerWidth != Output.ActualWidth - 300)
{
    Scenario4ImageContainer.Width = Output.ActualWidth - 300;
    Scenario4ImageContainer.Height = Output.ActualHeight - 20;
    containerWidth = Output.ActualWidth - 300;
}

ほとんどの場合は機能しますが、クラスが移動して戻ったときに、何らかの理由で問題が発生します。おそらく無関係です。

于 2013-03-23T11:52:13.963 に答える