限制Silverlight/WPF行为可见性
在Silverlight(可能还有WPF)中,当我为限制Silverlight/WPF行为可见性,wpf,silverlight,xaml,behavior,Wpf,Silverlight,Xaml,Behavior,在Silverlight(可能还有WPF)中,当我为System.Windows.Interactivity.Behavior定义一个ItemsControl,比如 public class SomeAwesomaticBehavior : Behavior<ItemsControl> { } public类someawesometicbehavior:Behavior { } 它将出现在VisualStudio的XAML编辑器中(可能也会出现在设计器中),即使是对于普通的非项控
System.Windows.Interactivity.Behavior
定义一个ItemsControl
,比如
public class SomeAwesomaticBehavior : Behavior<ItemsControl>
{
}
public类someawesometicbehavior:Behavior
{
}
它将出现在VisualStudio的XAML编辑器中(可能也会出现在设计器中),即使是对于普通的非项控件,也会引发严重的运行时异常。这与仅针对预期类型显示的附加属性相反
有没有办法限制这种可见性?也许有一些神奇的属性(尽管这是一个多余的声明)
如果今天没有办法,我希望将来会有?因为当许多与当前对象无关的行为突然出现时,它肯定会让同事和设计师们感到困惑
更新:我已经提交了uservoice项目
Silverlight:
WPF:@HeRz您是对的,无法按行为的目标类型筛选行为。Blend(可能还有vs designer)使用反射查找您创建的所有从基类型行为继承的类型,并将它们显示在资产列表中 混合将防止您将行为或触发器拖动到不需要的项目上。因此,这将有助于防止它们被滥用
我通常尝试将行为编写为可重用的代码片段,而不局限于特定的情况。它们只是有特定用途的工具。哇,这么多年来终于有了答案,谢谢。我已经怀疑没有办法了。我编写了可广泛重用且非常通用的行为,但仍有一些情况并不总是对所有
DependencyObject
类型都有意义。所以,我想这几天我要申请一个功能。