wpf определение пользовательских свойств для стилей - PullRequest
5 голосов
/ 31 января 2010

Я создал пользовательскую кнопку с помощью стиля и шаблона элемента управления. Я хотел бы определить некоторые пользовательские свойства для этой кнопки, такие как ButtonBorderColour и RotateButtonText.

Как мне это сделать? Может ли это быть сделано только с использованием XAML или требует некоторого кода C # за работой?

1 Ответ

4 голосов
/ 31 января 2010

Свойства должны быть объявлены в C # с помощью DependencyProperty.Register (или, если вы не создаете пользовательскую кнопку, 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" />
...