无法将“System.Object”类型的对象强制转换为“Microsoft.Expression.DesignModel.DocumentModel.DocumentNode”

时间:2014-05-20 13:43:46

标签: wpf exception designer

我使用的自定义控件正常工作,但在设计器中抛出异常。

异常消息是"无法转换类型为' System.Object'的对象。输入' Microsoft.Expression.DesignModel.DocumentModel.DocumentNode'"

XAML是这样的:

<custom:GaugeControl Value="{Binding Path=PaperRemaining}"
                     Stops="{StaticResource AutomationGaugeStops}"/>

问题在于Stops="{StaticResource AutomationGaugeStops}";如果我定义了值(或完全删除该位),它就不会抱怨。

AutomationGaugeStops在单独的文件中定义。

<GradientStopCollection x:Key="AutomationGaugeStops">
    <GradientStop Color="{StaticResource AutomationIndicatorGreen}"
                  Offset="1.0" />
    <GradientStop Color="{StaticResource AutomationIndicatorYellow}"
                  Offset="0.5" />
    <GradientStop Color="{StaticResource AutomationIndicatorRed}"
                  Offset="0.0" />
</GradientStopCollection>

Stops属性在GuageControl代码隐藏中声明。

 public GradientStopCollection Stops
    {
        get { return (GradientStopCollection)GetValue(StopsProperty); }
        set { SetValue(StopsProperty, value); }
    }

    public static readonly DependencyProperty StopsProperty =
        DependencyProperty.Register("Stops", typeof(GradientStopCollection), typeof(GaugeControl), new UIPropertyMetadata(new GradientStopCollection(
            new[]{
                new GradientStop(Colors.Green, 1.0),
                new GradientStop(Colors.Yellow, 0.5),
                new GradientStop(Colors.Red,0)
            }), StopsChanged));

这会按预期编译并运行,但我很乐意理解并摆脱这个错误。谁能解释一下这里发生了什么?

0 个答案:

没有答案