我在 Silverlight 中有一个自定义控件,在我再次构建应用程序之前,通过属性窗口更改属性不会得到更新。可能是什么问题呢?
比如说。我有一个名为 Shapes 的控件。如果我选择形状类型为“辛烷值”,它应该在混合设计时表面中显示样本辛烷值。
但是,在我的情况下,它没有发生,混合设计器不会更新,直到我再次构建应用程序。请就此给我建议。我不想让消费者为他们所做的每一次财产价值变化而建造它,从而给消费者带来麻烦。
注意:控件中所有暴露的属性都是依赖属性。
我在 Silverlight 中有一个自定义控件,在我再次构建应用程序之前,通过属性窗口更改属性不会得到更新。可能是什么问题呢?
比如说。我有一个名为 Shapes 的控件。如果我选择形状类型为“辛烷值”,它应该在混合设计时表面中显示样本辛烷值。
但是,在我的情况下,它没有发生,混合设计器不会更新,直到我再次构建应用程序。请就此给我建议。我不想让消费者为他们所做的每一次财产价值变化而建造它,从而给消费者带来麻烦。
注意:控件中所有暴露的属性都是依赖属性。
Have you implemented the setter of your property so that the controls update when the property's value is changed?
(BTW, just because I'm curious, what's an octane shape? does it have something to do with chemistry?)
我拥有的是CommonStyles
用于应用样式的类型属性。例如,
CommonStyles
将包含 dp,如背景、前景、厚度等,
我犯的错误是,我直接分配了如下值。在基类中。[ShapeStyle 是 CommonStyle 类型的 dp]
//// Both properties are dp's but, assigned them like normal property. This caused the issue
ShapeBase.Background = this.Shape.ShapeStyle.Background;
ShapeBase.Foreground = this.Shape.ShapeStyle.Foreground;
ShapeFace.Background = this.Shape.ShapeFaceStyle.Background;
...
当我更改背景属性时,它不会更新我的ShapeBase.Background
属性。因为,它不受依赖约束。
我通过dp绑定解决了它。如下所示。
this.ShapeBase.SetBinding(BackgroundProperty,
new Binding() {
Source = this.Shape.ShapeStyle,
Path = new PropertyPath("Background") });