2009-09-30 31 views
0

我有一個包含Slider控件的自定義控件模板。
我的名字,作爲在實現自定義控件類的一部分:自定義控件模板部分的問題設置屬性值部分

[TemplatePart(Name = MapZoomSliderName, Type = typeof(Slider))] 

在OnApplyTemplate()重寫,我得到的滑塊:

 MapZoomSlider = (Slider) GetTemplateChild("MapZoomSlider"); 
     if (null != MapZoomSlider) 
     { 

      MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged); 
      MapZoomSlider.Value = InitSliderValue; // crash 
      _lastSliderValue = MapZoomSlider.Value; 
     } 

當我嘗試設置Slider的值屬性,應用程序崩潰,「對象引用未設置爲對象的實例」。
獲取滑塊的值按預期工作。
在運行時設置Slider的值需要做些什麼?
感謝您的任何提示...

回答

0

什麼是「InitSliderValue」?也許它是錯誤的值類型? (必須是雙精度)另外,零或負值可能不是有效值。

0

看來問題在於在更改Value屬性之前設置了ValueChanged處理程序。 ValueChanged處理程序試圖操作應用程序的其他部分,可能尚未準備好的部分。
如果我設置的值,然後添加處理程序,它的工作原理。

MapZoomSlider.Value = InitSliderValue; // all good 
MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged);