2015-11-06 44 views
1

我想獲得一個UI元素的x,y位置的wpf頁面(不是窗口)。爲了確保頁面的呈現完成,我將Loaded偵聽器中的PointToScreen撤銷。但是,我得到此運行時異常:試圖執行一些事情後,頁面呈現不只是加載在WPF

此Visual未連接到PresentationSource。

void Page_Loaded(object sender, RoutedEventArgs e) 
     { 
     ..... 
     Point position = button1.PointToScreen(new Point(0d, 0d)); 
     } 

請讓我知道該怎麼辦?或者你能否提供一個例子來說明我可以如何運行調度程序?

回答

0

有沒有內置或官方的方式來做到這一點。但是你可以使用Dispatcher類作爲一種解決方法:

private void OnWindowLoaded(object sender, RoutedEventArgs e) 
{ 
    Dispatcher.BeginInvoke(new Action(() => YOUR_THING_HERE), DispatcherPriority.ContextIdle, null); 
} 

當幾乎所有其他操作都完成調度程序將運行(其中包括你的渲染)

我有一個類似的問題自己,所以這個答案基於this博客文章,爲我解決它。

編輯:實際上,我是錯了

有一個ContentRendered事件起到這個作用。

+0

還有[CompositionTarget.Rendering事件](https://msdn.microsoft.com/en-us/library/system.windows.media.compositiontarget.rendering(v = vs.110).aspx)。 –

相關問題