自定义控件模板部件上的问题设置属性值

时间:2009-09-30 12:53:08

标签: silverlight-3.0

我有一个包含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值需要做什么? 谢谢你的任何提示......

2 个答案:

答案 0 :(得分:0)

什么是“InitSliderValue”?也许是错误的价值类型? (必须是双倍)此外,零或负可能不是有效值。

答案 1 :(得分:0)

问题出现在更改Value属性之前设置ValueChanged处理程序。 ValueChanged处理程序试图操纵app的其他部分,这些部分可能还没有准备好 如果我设置了值,然后添加处理程序,它会按照需要运行。

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