【发布时间】:2011-06-08 09:13:50
【问题描述】:
我目前正在将我创建的一些附加行为迁移到混合行为,以便它们支持在 Expression Blend 中拖放。我注意到 Blend 行为的作者倾向于将行为属性定义为依赖属性。
我创建了一个行为TiltBehaviour,它公开了一个双精度类型的公共依赖属性TiltFactor。在 Expression Blend 中,我可以设置此属性的值,但是,添加“数据绑定 ...”的选项显示为灰色:
我还注意到行为扩展了DependencyObject,因此它们没有DataContext,因此无法继承它们所附加到的元素的DataContext。这对我来说就像是一个真正的弱点!
因此,底线是,如果我无法在 Blend 中设置与我的行为依赖属性的绑定,并且它没有继承 DataContext,那么为什么还要使用依赖属性呢?我可以只使用 CLR 属性。
【问题讨论】:
-
这很奇怪,它是什么版本的Blend?我使用 Blend 4 + Silverlight 4 将元素属性或 DataContext 属性绑定到行为的依赖属性没有问题...
-
Dain,我已经尝试在 Visual Studio 中手动绑定,例如TiltFactor="{Binding}" 这会导致 AG_E_PARSER_BAD_PROPERTY_VALUE,这通常表明您正在绑定到非依赖属性。您能指出网络上绑定行为属性的示例吗?
-
您必须绑定到正确类型的具体属性:TiltFactor="{Binding TiltFactor}"
-
Dain ...这取决于您的 DataContext 是什么,在上面的示例中,我将要附加的元素的 DataContext 设置为双精度,例如Rectangle.DataContext = 10.0,因此 TiltFactor="{Binding}" 的绑定,没有属性路径是完全有效的。无论如何,我尝试了您的建议 TiltFactor="{Binding TiltFactor}" ,仍然没有乐趣! .... 也许这是 VS / Silverlight for Windows Phone 7 中的一个特定问题。
-
啊,抱歉...没办法了,它适用于我的 SL4,即使是隐式继承的 DataContext。
标签: wpf silverlight expression-blend attachedbehaviors