限制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编辑器中(可能也会出现在设计器中),即使是对于普通的非项控

在Silverlight(可能还有WPF)中,当我为
System.Windows.Interactivity.Behavior
定义一个
ItemsControl
,比如

public class SomeAwesomaticBehavior : Behavior<ItemsControl>
{
}
public类someawesometicbehavior:Behavior
{
}
它将出现在VisualStudio的XAML编辑器中(可能也会出现在设计器中),即使是对于普通的非项控件,也会引发严重的运行时异常。这与仅针对预期类型显示的附加属性相反

有没有办法限制这种可见性?也许有一些神奇的属性(尽管这是一个多余的声明)

如果今天没有办法,我希望将来会有?因为当许多与当前对象无关的行为突然出现时,它肯定会让同事和设计师们感到困惑

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

Silverlight:


WPF:

@HeRz您是对的,无法按行为的目标类型筛选行为。Blend(可能还有vs designer)使用反射查找您创建的所有从基类型行为继承的类型,并将它们显示在资产列表中

混合将防止您将行为或触发器拖动到不需要的项目上。因此,这将有助于防止它们被滥用


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

哇,这么多年来终于有了答案,谢谢。我已经怀疑没有办法了。我编写了可广泛重用且非常通用的行为,但仍有一些情况并不总是对所有
DependencyObject
类型都有意义。所以,我想这几天我要申请一个功能。