Я сетка на моем элементе управления silverlight, я программно добавляю холст, а на холсте я загружаю и показываю изображение.Как заставить ActualWidth и ActualHeight обновить (silverlight)
Я также добавляю поворот к холсту. Проблема в том, что по умолчанию CenterX и CenterY вращения являются верхним левым краем холста. Я хочу, чтобы вращение происходило вокруг центра холста.
Чтобы сделать это, я попытался установить CenterX и CenterY вращения с изображениями 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));
Это сработало для меня, спасибо! –
Работал и для меня. Благодарю. – Jordan