爲了達到你所尋找的自己定製的附加屬性有兩種選擇:
如果設定值的組合的數量並不複雜,你可以做類型的附加屬性列舉了FlagsAttribute。您可以在結合了值,您要使用設置按位或|
:
[Flags]
public enum MultiDock
{
Left,
Top,
Right,
Bottom
}
及其代碼的用法:
MyCustomPanelOrWhatever.SetMultiDock(MultiDock.Left | MultiDock.Bottom);
這有一個小proplem但是,你不能在上面做xaml直接,你將不得不寫一個MarkupExtension可以將字符串轉換爲標記的枚舉值。然後它的使用是這樣的:
<CheckBox src:MyCustomPanelOrWhatever.MulitDock="{src:FlaggedEnum Left|Bottom}" />
2.由於附加屬性可以是任何類型的,他們可以當然也可以是複雜的類型(具有多個子屬性)或甚至集合,因此可以容易地做這樣的事情:
MyCustomPanelOrWhatever.SetMultiDock(new List<MultiDock> { MultiDock.Left, MultiDock.Bottom });
如果您已經定義了附加屬性這樣,你不需要對任何XAML轉換器,你可以直接使用它:
<CheckBox>
<src:MyCustomPanelOrWhatever.MultiDock>
<src:MultiDock.Left/>
<src:MultiDock.Bottom/>
</src:MyCustomPanelOrWhatever.MultiDock>
</CheckBox>
所以,我不明白什麼是「AttachedProperty」的用法,它是做什麼的,當CheckBox最終與CheckBox一起存儲時,也可以使用CheckBox上的某些屬性來完成。爲什麼DockPanel正在定義和擁有該屬性並使用它來維護屬性標識符。 – teenup 2010-11-08 07:15:09