2017-02-23 168 views
1

Im работает над пользовательским элементом управления WPF, который принимает элементы и скрывает/показывает их с помощью кнопки Toggle.Добавить UIElements для пользовательского контроля во время разработки

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

важная часть моего контроля выглядит следующим образом:

MyCustomControl.cs

... 
public UIElement InnerContent 
    { 
     get { return (UIElement)GetValue(InnerContentProperty); } 
     set { SetValue(InnerContentProperty, value); } 
    } 

    public static readonly DependencyProperty InnerContentProperty = 
     DependencyProperty.Register("InnerContent", typeof(UIElement), typeof(MyCustomControl)); 
... 

и соответствующая ContentPresenter так:

<ContentPresenter Height="0" 
        x:Name="ToggleRegion" 
        Content="{Binding Path=InnerContent, RelativeSource={RelativeSource AncestorType=local:MyCustomControl}}"> 
</ContentPresenter> 

Моя проблема сейчас это, что я нужно сделать высоту ContentPresenter равным 0, потому что я хочу, чтобы содержимое было скрыто в начале. Есть ли способ, которым я могу позволить пользователю моего элемента управления добавлять элементы посредством Drag and Drop во время его дизайна? Этот элемент управления должен полностью работать в XAML. Свойства, которые указаны в Code Behind, являются свойствами.

Благодарим за помощь.

+0

Необходимо включить свойство AllowDrop и работать с событиями Drop/DropComplete, drop ... etc. –

+0

Даже если я хочу разрешить пользователю удалять элементы из набора инструментов Visual Studio, мне нужно реализовать Drop Events? – Febertson

+0

Да, в противном случае он не знает, как обращаться с тем, что вы отбрасываете ... Кроме того, вы можете изменить курсор для предметов, которые разрешено отбрасывать, а элементы не разрешены. –

ответ

0

Даже если ContentPresenter не установлен на 0 высоту, вы не сможете перетаскивать UIElements в элемент управления.

См. Подобные вопросы о перетаскивании элементов управления WPF во время разработки.
WPF - How to enable dragging controls into ContentControl at Design-Time?
How to make custom WPF ContentControl that supports drag-and-drop at design time?

На мой взгляд, нет никакого официального способа включить Drag-And-Drop во время разработки для содержания/UserControl, это просто не поддерживается дизайном. однако вы должны унаследовать от Panal, Grid или Border.

Смежные вопросы