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

不久前,我试图测量字符串的宽度。您可以尝试类似的机制来获取尺寸。

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 回答
1

好像我找到了您需要处理的事件:您应该处理ImageOpened事件。这是因为图像是异步检索的,如果尝试处理任何其他事件,则很有可能当时没有加载图像,因此实际大小为零

于 2013-02-27T05:04:26.257 回答
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 回答