Настраиваемый атрибут времени разработки для WPF - PullRequest
1 голос
/ 24 марта 2010

Я создал пользовательский элемент управления и хотел бы создать атрибут (доступный во время разработки Blend), который бы предлагал выпадающий список или комбинированный список. Затем дизайнер выберет один из доступных вариантов. Очень похоже на комбо "Курсор" на вкладке "Общие свойства", за исключением того, что я хочу полный контроль над тем, какие элементы идут в комбо. Выбор может быть разным, поэтому я не могу использовать жестко закодированный enum.

Я знаю, что можно объявить атрибуты дизайна следующим образом:

protected string mString;
[Category("Common Properties")]
[DisplayName("My Friendly Name")]
public string MyFriendlyName
{
   get { return mString; }
   set { mString= value; }
}

В приведенном выше случае «Мое дружеское имя» - это просто строка. Пользователь может ввести все, что он хочет.

protected Uri mPathname;
[Category("Common Properties")]
[DisplayName("Resource pathname")]
public Uri MyResPathname
{
   get { return mPathname; }
   set { mPathname = value; }
}

В приведенном выше случае «Путь к ресурсу» имеет поле со списком, но список элементов обрабатывается Blend.

Если я использую enum, результатом будет комбо с моими предметами в нем, но тогда я не смогу изменить список предметов.

public enum MyChoices
{
   Aaa,
   Bbb
}

public class MyButton : Button
{

  (...)

  [Category("Common Properties")]
  public MyChoices MyChoice
  {
     get { return (MyChoices)GetValue(MyChoiceProperty); }
     set { SetValue(MyChoiceProperty, value); }
  }

  public static readonly DependencyProperty MyChoiceProperty =
        DependencyProperty.Register("MyChoice", 
                                    typeof(MyChoices), 
                                    typeof(MyButton ), 
                                    new UIPropertyMetadata(
                                          (MyChoices)MyChoices.Aaa,
                                          OnMyChoiceChangedCallback));

}

В приведенном выше примере выбор жестко закодирован в перечислении ...

Кто-нибудь может помочь? Я уверен, что это легко, я очень близок, но теперь я иду кругами.

1 Ответ

0 голосов
/ 24 марта 2010

Возможно, вы ищете PropertyValueEditor.

Вот пошаговое руководство : реализация встроенного редактора значений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...