2017-02-23 144 views
1

我正在使用WPF自定義控件,該控件使用元素並使用切換按鈕隱藏/顯示它們。設計時將UI元素添加到自定義控件

要隱藏的元素應由設計時的控制用戶定義。

我控制的重要組成部分,是這樣的:

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,因爲我希望將內容隱藏在開始位置。有沒有一種方法可以讓我的控件的用戶在設計時間內通過拖放添加元素? 該控件應該在XAML中完整地工作。在代碼隱藏中定義的唯一東西是屬性。

感謝您的幫助。

+0

您需要啓用AllowDrop屬性並使用Drop/DropComplete,drop ...等事件。 –

+0

即使我想允許用戶從Visual Studio工具包中刪除元素,我需要實現刪除事件? – 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?

我的意見沒有任何官方的方式啓用一個內容在設計時將和拖放/用戶控件,它只是不支持設計。但是你應該考慮繼承Panal,Grid或Border。

相關問題