wpf定义样式的自定义属性

时间:2010-01-30 23:31:16

标签: wpf properties styles

我已使用样式和控件模板创建了自定义按钮。我想为这个按钮定义一些自定义属性,如ButtonBorderColour和RotateButtonText。

我该如何解决这个问题?它可以只使用XAML完成,还是需要一些C#代码?

1 个答案:

答案 0 :(得分:4)

需要使用DependencyProperty.Register在C#中声明属性(或者,如果您没有创建自定义按钮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); }
}

如果您没有创建自定义类,但想要定义可以在普通Button上设置的属性,请使用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" />