混合行为 - 默认收集值在Blend中不可见

时间:2011-01-08 16:21:12

标签: c# wpf silverlight expression-blend

我创建了一个适用于非集合属性的行为,但Blend设计器没有“看到”带有集合的默认值。例如:

//WORKS!! (Enabled defaults to "true" (good))
private bool enabled = true;
[Category("Physics"), Description("")]
public bool Enabled
{
     get { return enabled; }
     set
     {
           enabled = value;
     }
}

//DOESN'T WORK! The collection is always blank unless I manually add the items to the collection
private List<Category> collisionCategories = new List<Category>() { Category.All };
[Category("Physics"), Description("")]
public List<Category> CollisionCategories
{
    get { return collisionCategories; }
    set
    {
        collisionCategories = value;
    }
}

为什么“Category.All”不在我的列表中?

2 个答案:

答案 0 :(得分:0)

它是否像这样工作:

private List<Category> collisionCategories =
       new List<Category>(new Category[] { Category.All });

答案 1 :(得分:0)

在Blend中,您的收藏品右侧有一个小方块。如果它全黑,那么您的集合具有“默认”值,即您设置的值。如果要覆盖集合属性的默认值,则必须指定要添加到空白集合的项目。然后小方块将显示白色轮廓。

这就是Blend中所有集合属性的工作方式,以及Visual Studio设计器的工作方式。但请放心,如果用户未指定集合的​​值,则默认值将适用。