我目前正在将我创建的一些附加行为迁移到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] 举报,一经查实,本站将立刻删除。