我有一个包含Slider控件的自定义控件模板 我将其命名为实现自定义控件的类中的一部分:
[TemplatePart(Name = MapZoomSliderName, Type = typeof(Slider))]
在OnApplyTemplate()重写中,我得到了Slider:
MapZoomSlider = (Slider) GetTemplateChild("MapZoomSlider");
if (null != MapZoomSlider)
{
MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged);
MapZoomSlider.Value = InitSliderValue; // crash
_lastSliderValue = MapZoomSlider.Value;
}
当我尝试设置Slider的Value属性时,应用程序崩溃,“对象引用未设置为对象的实例。”
获取滑块的值可以按预期工作
在运行时设置Slider值需要做什么?
谢谢你的任何提示......
答案 0 :(得分:0)
什么是“InitSliderValue”?也许是错误的价值类型? (必须是双倍)此外,零或负可能不是有效值。
答案 1 :(得分:0)
问题出现在更改Value属性之前设置ValueChanged处理程序。 ValueChanged处理程序试图操纵app的其他部分,这些部分可能还没有准备好 如果我设置了值,然后添加处理程序,它会按照需要运行。
MapZoomSlider.Value = InitSliderValue; // all good
MapZoomSlider.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(MapZoomSlider_ValueChanged);