我在Windows Workflow中构建了许多自定义活动,我需要添加一个DependencyProperty,它可以列出该属性的多个值,然后用户可以在使用该活动时选择这些值。 / p>
e.g。对错。
我知道如何使用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);
}
}
答案 0 :(得分: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,则“user”也更容易使用属性网格。注意也删除了“属性”后缀,使其更容易阅读。