2010-01-30 118 views
5

我使用樣式和控件模板創建了自定義按鈕。我想定義這個按鈕的一些自定義屬性,例如ButtonBorderColour和RotateButtonText。wpf定義樣式的自定義屬性

我該如何解決這個問題?只能使用XAML來完成,還是需要一些C#代碼?

回答

4

這些屬性需要在C#中使用DependencyProperty.Register(或者,如果您沒有創建自定義按鈕Tyoe,DependencyProperty.RegisterAttached)來聲明。下面是如果要創建一個自定義按鈕聲明:

public static readonly DependencyProperty ButtonBorderColourProperty = 
    DependencyProperty.Register("ButtonBorderColour", 
    typeof(Color), typeof(MyButton)); // optionally metadata for defaults etc. 

public Color ButtonBorderColor 
{ 
    get { return (Color)GetValue(ButtonBorderColourProperty); } 
    set { SetValue(ButtonBorderColourProperty, value); } 
} 

如果你沒有創建一個自定義類,但要定義可以在一個正常的按鈕來設置屬性,使用RegisterAttached:

public static class ButtonCustomisation 
{ 
    public static readonly DependencyProperty ButtonBorderColourProperty = 
    DependencyProperty.RegisterAttached("ButtonBorderColour", 
    typeof(Color), typeof(ButtonCustomisation)); // optionally metadata for defaults etc. 
} 

然後可以在XAML中設置它們:

<local:MyButton ButtonBorderColour="HotPink" /> 
<Button local:ButtonCustomisation.ButtonBorderColour="Lime" />