Параметр «Коллекция элементов» для пользовательского элемента управления - PullRequest
4 голосов
/ 15 февраля 2011

Как вы можете видеть на картинке ниже, для элемента управления ListView вы можете добавлять элементы с помощью панели свойств.

Как включить такие вещи для моего UserControl?

Iя ничего не получаю при поиске в Google, но, возможно, я не использую правильные термины.

Кто-нибудь знает?

Спасибо

Visual Studio Properties Pane

1 Ответ

6 голосов
/ 15 февраля 2011

Вам необходимо создать класс, который определяет тип объекта, из которого состоит коллекция. ListView имеет объекты ListViewItem. TabControl имеет объекты TabPage. Ваш контроль имеет объекты, которые определены вами. Давайте назовем это MyItemType.

Вам также нужен класс-обёртка для коллекции. Простая реализация показана ниже.

public class MyItemTypeCollection : CollectionBase
{

    public MyItemType this[int Index]
    {
        get
        {
            return (MyItemType)List[Index];
        }
    }

    public bool Contains(MyItemType itemType)
    {
        return List.Contains(itemType);
    }

    public int Add(MyItemType itemType)
    {
        return List.Add(itemType);
    }

    public void Remove(MyItemType itemType)
    {
        List.Remove(itemType);
    }

    public void Insert(int index, MyItemType itemType)
    {
        List.Insert(index, itemType);
    }

    public int IndexOf(MyItemType itemType)
    {
       return List.IndexOf(itemType);
    }
}

Наконец, вам нужно добавить переменную-член для коллекции в свой пользовательский элемент управления и правильно ее оформить:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public MyItemTypeCollection MyItemTypes
    {
        get { return _myItemTypeCollection; }
    }

и теперь у вас есть простой интерфейс, который позволяет просматривать и редактировать коллекцию. Оставляет желать лучшего, но чтобы сделать больше, вам нужно узнать о пользовательских дизайнерах, которые могут быть трудны для понимания и реализации.

...