如何强制ActualWidth和ActualHeight更新(silverlight)

Jer*_*emy 9 silverlight actualwidth actualheight

我在silverlight控件上有一个网格,我以编程方式添加了一个画布,在画布中我正在加载并显示Image.

我还在画布上添加一个旋转.问题是默认情况下,旋转的CenterX和CenterY是画布的左上角.我想要的是围绕画布中心的旋转.

为此,我尝试将旋转的CenterX和CenterY设置为Images ActualWidth/ 2和ActualHeight/ 2,但是我发现ActualWidth并且ActualHeight并不总是填充,至少不会立即填充.我如何强迫他们更新?

即使在图像上使用DownloadProgress事件似乎也不能保证填充ActualWidth和ActualHeight,也没有使用this.Dispatcher.BeginInvoke()...

Image imgTest = new Image();
Canvas cnvTest = new Canvas();
Uri uriImage = new Uri("myurl", UriKind.RelativeOrAbsolute);
System.Windows.Media.Imaging.BitmapImage bmpDisplay = new System.Windows.Media.Imaging.BitmapImage(uriImage);

bmpDisplay.DownloadProgress += new EventHandler<System.Windows.Media.Imaging.DownloadProgressEventArgs>(this.GetActualDimensionsAfterDownload);

imgTest.Source = bmpDisplay;
imgTest.Stretch = Stretch.Uniform;
imgTest.HorizontalAlignment = HorizontalAlignment.Center;
imgTest.VerticalAlignment = VerticalAlignment.Center;

cnvTest.Children.Add(imgTest);

this.grdLayout.Children.Add(imgTest);
this.Dispatcher.BeginInvoke(new Action(GetActualDimensions)); 
Run Code Online (Sandbox Code Playgroud)

Mar*_*age 13

要更新ActualWidthActualHeightFrameworkElement你将不得不调用UpdateLayout.