2012-10-22 59 views
1

假設你創建一個標準的用戶控件或WPF中CustomControl然後聲明一個複雜類型WPF用戶控件:使編輯的複雜性

公共ComplexPropertyType AProperty {的屬性來獲取;組; }

複雜類型是一個簡單的類與一羣屬性

public class ComplexPropertyType 
{ 
    public int IntP { get; set; } 

    public String Strp { get; set; } 
} 

的在設計時AProperty不可編輯。

As you can see the AProperty property is not editable

我記得有來自System.ComponentModel屬性,允許我指定要使用標準的屬性編輯器,以使該屬性可編輯的,但我不記得了。

任何人都有一個解決方案,顯然不需要編寫自定義屬性編輯器?畢竟如果我在我的控制中聲明一個屬於複雜類型Es的集合。

public ObservableCollection ACollOfProperty {get;組; }

自動設計者使用System.ComponentModel.Design.CollectionEditor是能夠事先編輯我的複合型

enter image description here

致謝。

回答

0

在WPF中你可以使用這個http://wpg.codeplex.com/或使用該winform contro

+0

我希望使用visual studio中包含的編輯器:),因爲它適用於集合編輯器,它應該可用於單個對象 – Alkampfer

+0

您的答案很好,但我不想創建另一個屬性編輯器,因爲WPF設計器有自己的,睡了一個晚上,清醒的頭腦,我能記住:)的確切屬性,它是 [TypeConverter(typeof(ExpandableObjectConverter))] – Alkampfer

0

我能找到自己的屬性,是類型轉換器。你應該聲明在用戶控件的屬性與TypeConverterAttribute指定ExpandableObjectconverter

[TypeConverter(typeof(ExpandableObjectConverter))] 
    public ComplexPropertyType AProperty { get; set; } 

現在,你應該在設計師看到一個不錯的新按鈕,使您能夠填充在設計時價值

Now property is designable

按下new將會創建ComplexPropertyType的一個實例,所以它可以直接從設計者編輯。

Complex type editing in VS

Alk。