微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wpf – 混合行为 – 你能绑定到他们的属性吗?

我目前正在将我创建的一些附加行为迁移到Blend Behaviors,以便它们支持Expression Blend中的拖放.我注意到Blend行为的作者倾向于将行为属性定义为依赖属性.

我创建了一个行为TiltBehavIoUr,它暴露了一个类型为double的公共依赖属性TiltFactor.在Expression Blend中我可以设置此属性的值,但是,添加“数据绑定…”的选项显示为灰色:

我还注意到Behaviors扩展了DependencyObject,因此它们没有DataContext,因此无法继承它们所附加元素的DataContext.这对我来说真是个弱点!

所以,底线是,如果我不能在Blend中设置对我的行为依赖属性的绑定,并且它不继承DataContext,为什么还要使用依赖属性呢?我可以改用CLR属性.

解决方法

编辑:dain是正确的你仍然可以绑定到人工创建的DataContext,你有多少次看到人们绑定到SolidColorBrush.Color?即使SolidColorBrush继承自DependencyObject,它也可以工作,因此没有DataContext.

this blog post on the inheritance context.

问题是,由于行为是附加的,它们不会出现在逻辑树中,因此无论如何都不会继承DataContext.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐