2012-01-17 21 views
4

我有一個名爲AppPreferences的自定義類。這個類有一個名爲Color的依賴屬性。此依賴項屬性表示Color類型的枚舉值(這是一個自定義枚舉器)。我對AppPreferences代碼如下所示:XAML - 逗號分隔的依賴項屬性

public class AppPreferences 
{ 
    public static readonly DependencyProperty ColorProperty = DependencyProperty.RegisterAttached(
    "Color", 
    typeof(MyServiceProxy.Colors), 
    typeof(AppPreferences), 
    new PropertyMetadata(MyServiceProxy.Colors.DEFAULT, new PropertyChangedCallback(OnColorChanged)) 
); 

    private static void OnColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
    // Do Stuff 
    } 
} 

作爲一個開發者,我將它添加到我的UI元素,以幫助確定顏色。例如,我會做這樣的事情:

<TextBox custom:AppPreferences.Color="Black" ... /> 

我現在需要支持備用顏色。換句話說,我希望能夠提供一個逗號分隔的顏色列表值類似以下內容:

<TextBox custom:AppPreferences.Color="Black,Blue" ... /> 

我的問題是,我該如何更新我的依賴屬性和OnColorChanged事件處理程序,以支持多個值?

謝謝!

+1

可能重複[wpf依賴項屬性枚舉集合](http://stackoverflow.com/questions/4714193/wpf-dependency-property-enum-collection) – Heinzi

回答

0

您試圖實現的機制稱爲「附加屬性」。

閱讀this的信息。

下面是一個簡短的代碼摘錄,所有這一切:

public static readonly DependencyProperty IsBubbleSourceProperty = 
DependencyProperty.RegisterAttached(
    "IsBubbleSource", 
    typeof(Boolean), 
    typeof(AquariumObject), 
    new FrameworkPropertyMetadata(false, 
    FrameworkPropertyMetadataOptions.AffectsRender) 
); 
public static void SetIsBubbleSource(UIElement element, Boolean value) 
{ 
    element.SetValue(IsBubbleSourceProperty, value); 
} 
public static Boolean GetIsBubbleSource(UIElement element) 
{ 
    return (Boolean)element.GetValue(IsBubbleSourceProperty); 
} 

this,以獲得更多的逗號分隔枚舉在XAML。

您也可能想要結賬this

0

您應該ensure that you have a flagwise enumeration爲了允許此語法。這可以通過將FlagsAttribute添加到枚舉中。

[Flags] 
enum Colors 
{ 
    Black, 
    ... 
} 

對於flagwise枚舉,行爲是基於Enum.Parse 方法。您可以在 之間用逗號分隔每個值,以便爲枚舉枚舉指定多個值。但是,不能合併 枚舉值,而不是標記爲。例如,不能使用逗號語法的 嘗試創建觸發器,該觸發器在非標記枚舉的多個 條件上起作用。