2009-09-30 59 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);