2

我在 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);
    }
}
4

1 回答 1

1

首先,True/False 示例不是很好,在这种情况下使用 bool 类型。

对于多值项目,为什么不使用枚举:-

 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);
  }
}

请注意属性上的属性的简化。特别是 Browseable 为 true 并且 DesignerSerializationVisiblity 为 Visible 是默认设置,因此请删除它们。此外,如果定义了 DefaultValue,则“用户”更容易使用属性网格。注意还删除了“属性”后缀,使其更易于阅读。

于 2009-11-13T19:12:04.723 回答