Visual Studio 2010设计时集合编辑器

时间:2011-04-08 16:04:03

标签: c# .net visual-studio-2010 design-time

我正在为WPF和Silverlight开发自定义控件。此控件具有一个抽象的复杂类型的collection属性,如:

public Collection<MyBase> Configuration
    {
        get { return (Collection<MyBase>)GetValue(ConfigurationProperty); }
        set { SetValue(ConfigurationProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Configuration This enables animation, styling, binding, etc...
    public static readonly DependencyProperty ConfigurationProperty =
        DependencyProperty.Register("Configuration", typeof(Collection<MyBase>), typeof(MyControl), new PropertyMetadata(new ObservableCollection<MyBase>()));

我的问题是我无法在Visual Studio 2010的设计器中向此属性添加新项目,因为它不知道任何派生类型的MyBase。

有没有办法向设计师注册这些类型?编辑器可以正常使用现有项目,并可以删除和修改它们。图片说明:

enter image description here

1 个答案:

答案 0 :(得分:5)

您需要使用NewItemTypesAttribute修饰您的集合属性。您可以直接在您的类中执行此操作,但在WPF / Silverlight中,这些通常在单独的设计程序集中定义。对here进行了很好的了解。