我使用的自定义控件正常工作,但在设计器中抛出异常。
异常消息是"无法转换类型为' 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));
这会按预期编译并运行,但我很乐意理解并摆脱这个错误。谁能解释一下这里发生了什么?