Вы не хотите предоставлять своему элементу управления параметризованный конструктор, XAML будет создавать только типы, используя их конструктор по умолчанию.
Простой подход
Самый простой подход - добавить DependencyProperty к вашему элементу управления, которому вы должны назначить элемент управления Map (в этом примере я буду использовать имя типа MyMap
): -
public MyMap Map
{
get { return (MyMap)GetValue(MapProperty); }
set { SetValue(MapProperty, value); }
}
public static DependencyPropery MapProperty = new DependencyProperty("Map",
typeof(MyMap), typeof(MapEditor), new PropertyMetaData(null));
Теперь в Blend свойство Map
появится в категории «Разное» на вкладке «Свойства». Затем вы можете использовать вкладку «Свойство элемента» в «Создать привязку данных», чтобы выбрать элемент управления картой, к которому он должен привязаться.
Жесткий подход
Тем не менее, я был бы склонен создать надлежащий настраиваемый элемент управления, следуя этим рекомендациям Создание нового элемента управления путем создания ControlTemplate. С добавлением того, что я бы расширил базовый класс ContentControl
и включил ContentPresenter
в основу шаблона. Элемент управления предполагает, что дочерний элемент управления является MyMap
элементом управления.
Этот подход позволяет стилизовать весь внешний вид элемента управления MapEditor
в Blend и позволяет элементу управления Map, который должен быть «отредактирован», перетаскиваться на MapEditor
в качестве дочернего элемента управления.
person
AnthonyWJones
schedule
23.01.2010