限制Silverlight / WPF行为可见性

前端之家收集整理的这篇文章主要介绍了限制Silverlight / WPF行为可见性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Silverlight(可能还有 WPF)中,当我定义一个System. Windows.Interactivity.Behavior< T>时例如像ItemsControl一样

public class SomeAwesomaticBehavior : Behavior<ItemsControl>
{
}

它将出现在Visual Studio的XAML编辑器中(也可能出现在Designer中),即使对于普通的非Items控件也会出现令人讨厌的运行时异常.这与仅为预期类型出现的附加属性相反.

有没有办法限制这种可见性?一些神奇的属性可能(虽然这将是一个多余的声明)?

如果今天没办法,我希望将来会有这样的事情吗?因为当弹出很多与当前对象无关的行为时,肯定会让同事和设计人员感到困惑.

更新:我已经提交了uservoice项目.

Silverlight:http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/1224253-restrict-behavior-visibility?ref=title

WPF:http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions/suggestions/1224259-restrict-behavior-visibility?ref=title

解决方法

@HeRz你是对的,没有办法按目标类型过滤行为. Blend(可能还有vs designer)使用反射来查找从基类型行为继承的所有类型,并将它们显示在资源列表中.

混合将阻止您将行为或触发器拖动到不适合的项目上.所以这应该有助于防止他们滥用.

我通常尝试将行为编写为可重用的代码片段,而不是作用于特定情况.它们只是具有特定目的的工具.

猜你在找的Silverlight相关文章