Инкапсуляция и настройка стороннего элемента управления WPF - PullRequest
0 голосов
/ 04 июня 2009

Я заинтересован в настройке стороннего элемента управления, такого как RadrikridView от Telerik, в качестве автономного элемента управления, например, добавление кнопок «Новая строка» и «Удалить строку» над сеткой, при этом все еще поддерживая манипуляции XAML с внутренними элементами элемента управления окно, в котором существует мой элемент управления (т. е. чтобы окно добавляло свой собственный стиль в столбец сетки).

Есть ли способ добавить кнопки и т. Д. С помощью шаблонов? Стили?

Мое текущее "решение" - наследовать от RadGridView, но я застрял на том, как добавить нужные мне функции.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 июня 2009

Мое предложение - использовать композицию вместо наследования.

Вы можете создать свой собственный элемент управления ( UserControl должен сделать эту работу). Затем вы можете определить макет (может быть на панели «Сетка»): кнопки сверху, RadGridView ниже их и т. Д. Для пользовательской стилизации столбца вы можете использовать DynamicResource трюк. Установите стили столбцов, которые вы хотите изменить, с помощью DynamicResource . Таким образом, когда элемент управления добавляется в логическое (визуальное) дерево; WPF пройдется по дереву управления и найдет соответствующий ресурс. Таким образом, в каждом окне / странице ресурсов вы можете определить свой ресурс.

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

1 голос
/ 16 июня 2009

Я бы пошел пользовательский маршрут UserControl вместо маршрута наследования. Стиль и тематика работают странно, когда вы имеете дело с подклассами. Если вы не планируете дублировать и модифицировать ControlTemplates и DataTemplates от Telerik, это может стать довольно волосатым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...