Как создать ComboBox как UserControl в WPF - PullRequest
5 голосов
/ 07 марта 2011

Я пытаюсь создать usercontrol, который может принимать элементы из XAML, например:

            <ComboBox >
                <ComboBoxItem />
                <ComboBoxItem />
                <ComboBoxItem />
            </ComboBox>

В ComboBox вы можете просто добавить элементы между тегами ComboBox, и я хотел бы скопировать это, но я не знаю, с чего начать.

Готово это должно выглядеть так:

    <cis:ReportControl Grid.Row="3">
            <cis:ReportItem />
    </cis:ReportControl>

В cis:ReportControl есть Button s и ComboBox, и в основном я хочу кормить ComboBox Предметами.

Элемент отчета - это просто ComboBoxItem с некоторыми дополнительными свойствами.

Edit:

Я реализовал его в соответствии с ответом @Snowbears, но теперь проблема в том, что элемент управления сам по себе является элементом. Я думаю, это потому, что у меня есть некоторый контент, и, определив ContentProperty для моего ComboBox, он перенаправляется в Box. Что я могу сделать, чтобы избежать этого?

Редактировать II:

Теперь он полностью работает с этим:

    private ItemCollection reportItems;
    public ItemCollection ReportItems
    {
        get
        {
            if (reportItems == null)
            {
                reportItems = this.ComboBoxReports.Items;
            }
            return reportItems;
        }
    }

с атрибутом [ContentProperty("ReportItems")]. ComboBoxReports - это ComboBox в Control, и мне пришлось унаследовать от ItemsControl, чтобы заставить его работать.

Ответы [ 2 ]

4 голосов
/ 07 марта 2011
  1. Вы должны создать свойство в вашем UserControl, которое будет предоставлять что-то, реализующее интерфейс IList.Допустим, это свойство будет называться ReportItems.Это свойство не должно иметь установщика, и оно должно быть инициализировано в самом UserControl либо в конструкторе, либо путем инициализации поля на вспомогательном поле.
  2. UserControl должен быть помечен ContentProperty атрибутом с именем вашего свойства (ReportItems)
  3. Внутренний комбинированный список должен иметь ItemsSource, связанный с ReportItems свойством UserControl
0 голосов
/ 07 марта 2011

если вы ищете How Create own Control Вы должны искать две вещи:

1) Пользовательский элемент управления 1 или Пользовательский элемент управления 1 (это зависит от вашей потребности )
2) Свойства зависимостей (использовать их в управлении)

Я думаю, вам может понадобиться использовать пользовательский элемент управления, а также вы можете наследовать свой пользовательский элемент управления от ComboBox или других элементов управления.

...