所以我讀過ActualWidth
可能等於0,直到完全加載。我添加了事件處理程序,像這樣,以確保它的滿載:確保WPF中的ActualWidth不等於0
text.AddHandler(TextBlock.LoadedEvent, new RoutedEventHandler(textBlock_Loaded));
在textBlock_Loaded
情況下,我有:
TextBlock tb = sender as TextBlock;
textBlockWidth = tb.ActualWidth;
我需要在我的主要方法使用變量textBlockWidth
,但每次我寫textBlockWidth的輸出值,在我的主要方法,我得到0
所以這個問題是,我該如何確保ActualWidth
不爲0的執行我之前的行爲離子?由於WPF是事件驅動的,有沒有辦法在完成時觸發某種方法,而不是之前?否則,它將返回0.
我已經試過了這樣的方法 - 但我的問題是,它永遠不會在我需要時加載。我在我的主要調用這個,並將ActualWidth設置爲一個變量後,我開始使用這個變量(在我的主要方法)。它仍然會返回零,因爲它還沒有加載。 – DMan 2010-08-23 14:43:35
它應該工作。您可以嘗試父窗口調度程序,而不是控制的調度程序。這會幫助它看起來。 像,this.Dispatcher.BeginInvoke((Action)... http:// stackoverflow。com/questions/2452246/how-to-invoke-wpf-dispatcher-in-nunit – 2010-08-23 14:58:23
嗨DMan,我試過這樣,在Loaded窗口內部加載事件一切都很好。 'this.Loaded + =(S,E)=> { this.Dispatcher.BeginInvoke((動作)(()=> { Console.WriteLine(this.textBlock.ActualWidth); Console.WriteLine(」她「); })); }; ' – 2010-08-24 16:00:29