2017-01-01 77 views
1

我正在嘗試獲取ThumbSlider爲什麼控制模板在啓動時爲空?

_thumb = ((Track)AssociatedObject.Template.FindName("PART_Track", AssociatedObject))?.Thumb; 

這拋出NRE,因爲Template爲空。爲什麼Template在應用程序啓動過程中爲空?我該如何解決這個問題?

我試過下面

AssociatedObject.ApplyTemplate(); // no effect. returns false. 
var template = AssociatedObject.Template; // returns null. 

代碼即使我應用模板其仍然爲空。

以前我重寫滑塊OnApplyTemplate和模板不是null。

public override void OnApplyTemplate() 
{ 
    // works fine. 
    _thumb = ((Track)this.Template.FindName("PART_Track", this))?.Thumb; 
    base.OnApplyTemplate(); 
} 

但現在我正在嘗試創建滑塊的行爲,而不是創建一個子類,所以我不能重寫。任何想法如何解決這個問題?

回答

1

哦,我可以使用Loaded事件,並在那裏得到拇指。

AssociatedObject.Loaded += AssociatedObjectOnLoaded; 

private void AssociatedObjectOnLoaded(object sender, RoutedEventArgs routedEventArgs) 
{ 
    _thumb = ((Track)AssociatedObject.Template.FindName("PART_Track", AssociatedObject))?.Thumb; 
} 
相關問題