FindName被打破了我:(WPF - FindName當它不應該
如果你是這樣的事情一個專家我喜歡一些幫助,則返回null
我找的對象是存在的。我有證據
下面是這種情況:
ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");
popup
爲空,但並不總是公正,但有時即使它被設置爲null我looki孩子。在那裏。
我把一個斷點當它爲空,並抓住這兩個截圖。
的就是FindName將返回空值 「popSelectIteration」:
alt text http://img175.imageshack.us/img175/2055/popupisnull.png
但如果你深入到手錶,你看到孩子有:
alt text http://img708.imageshack.us/img708/8757/watchwithpopupnull.png
那麼我錯過了什麼?爲什麼FindName找不到它?從屏幕截圖中可以看到,這不是一個計時問題(FindName手錶爲空,但直接路徑正常)。
有沒有更好的方法來找到控件?
邊注意:如果您在XAML中插入問題的切換按鈕,可以在此問題中找到它:WPF - FrameworkElement - Enumerate all decendents?。
更新:我做了一些挖掘,看看爲什麼失敗了一些時間,其他時間它的作品。我有一個動畫,調用NameScope.SetNameScope((DependencyObject)form, new NameScope());
(完整方法代碼here)。在調用之後,FindName開始失敗。
我真的不明白那個電話。我想我複製並粘貼了代碼。無論如何,我評論它。但我想知道爲什麼這是失敗的。
爲我工作。這個問題與Template.FindName() – Trap 2011-11-13 02:46:03
這對我來說,這是一個問題更多的控件,最初隱藏或最初不可見的選項卡上。 – Dave 2012-06-30 14:38:07
我在使用ComboBox時遇到GetTemplateChild(「PART_EditableTextBox」)問題。事先調用ApplyTemplate()可以解決問題。謝謝! – 2014-05-14 14:05:28