【问题标题】:Restrict Silverlight/WPF Behavior visibility限制 Silverlight/WPF 行为可见性
【发布时间】:2010-11-16 00:11:56
【问题描述】:

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

public class SomeAwesomaticBehavior : Behavior<ItemsControl>
{
}

它会出现在 Visual Studio 的 XAML 编辑器中(也可能出现在设计器中),即使对于普通的非项控件并引发讨厌的运行时异常也是如此。这与仅针对预期类型显示的附加属性相反。

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

如果今天没有办法,我希望以后也有吗?因为当弹出很多与当前对象没有任何关系的行为时,它肯定会让同事和设计人员感到困惑。

更新:我已提交用户语音项目。

银光: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

【问题讨论】:

    标签: wpf silverlight xaml behavior


    【解决方案1】:

    @HeRz 你是对的,没有办法按目标类型过滤行为。 Blend(可能与设计器相比)使用反射来查找您创建的所有类型,这些类型继承自基本类型 Behavior,并将它们显示在资产列表中。

    Blend 将阻止您将行为或触发器拖到不希望的项目上。所以这应该有助于防止它们被滥用。

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

    【讨论】:

    • 哇,这么多年终于有答案了,谢谢。我已经怀疑没有办法了。我编写了广泛可重用且非常通用的行为,但仍有一些情况对所有DependencyObject 类型并不总是有意义。所以,我想我这几天要提交功能请求。
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 2016-09-08
    • 2012-06-12
    • 1970-01-01
    • 2010-11-02
    • 2014-10-19
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多