Добавление нескольких метаданных свойства в свойство зависимости в действии рабочего процесса - PullRequest
2 голосов
/ 13 ноября 2009

Я создаю несколько настраиваемых действий в рабочем процессе Windows, и мне нужно добавить DependencyProperty, который может перечислять количество значений для этого свойства, которые пользователь затем может выбрать при использовании действия. *

например. Верно или неверно.

Я знаю, как просто передать значение по умолчанию с помощью PropertyMetadata, и предположить, что теперь мне придется передать список / класс PropertyMetadata?

Кто-нибудь уже получил пример, как это сделать, пожалуйста?

(пример кода ниже)

public static DependencyProperty TestProperty = DependencyProperty.Register("Test", typeof(string), typeof(CheckActivity), new PropertyMetadata("True"));
/// <summary>
/// Dependency property for 'TestProperty'
/// </summary>   
[DescriptionAttribute("Whether a True/False entry is required")]
[CategoryAttribute("Settings")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
public string Type
{
    get
    {
        return ((string)(base.GetValue(CheckActivity.TestProperty)));
    }
    set
    {
        base.SetValue(CheckActivity.TestProperty, value);
    }
}

1 Ответ

1 голос
/ 13 ноября 2009

Прежде всего пример True / False не очень хорош, в этом случае используйте тип bool.

Для многозначного элемента, почему бы не использовать Enum: -

 public enum ItemEnum
 {
    First,
    Second,
    Third
 }

Сейчас в вашей активности: -

 public static DependencyProperty TestProperty = DependencyProperty.Register("Test",  
   typeof(ItemEnum), typeof(TestActivity), new PropertyMetadata(ItemEnum.First));

[Description("Select Item value")]
[Category("Settings")]
[DefaultValue(ItemEnum.First)]
public ItemEnum Type
{
  get
  {
    return (ItemEnum)GetValue(TestActivity.TestProperty);
  }
  set
  {
    SetValue(TestActivity.TestProperty, value);
  }
}

Обратите внимание на упрощение Атрибутов на объекте. В частности, «Доступный для просмотра» и «Видимый» для DesignerSerializationVisiblity являются значениями по умолчанию, поэтому удалите их. Кроме того, "пользователь" может использовать сетку свойств, если определено значение DefaultValue. Note также убрал суффикс «Attribute», что делает его более простым для чтения.

...