我创建了几个自定义控件,他们的childresn在属性浏览器中正确显示了WPF的附加属性,但在Silverlight中没有任何附加属性出现在Property Brower中。
如何在silverlight中为附加属性添加设计时支持?
答案 0 :(得分:2)
看起来可能有一些属性可以使自定义属性出现在设计器中:
http://blogs.msdn.com/jnak/archive/2008/01/17/showing-attached-properties-in-the-cider-wpf-designer.aspx
我还没有尝试过,不确定它是否适用于Silverlight。
答案 1 :(得分:0)
Henrik绝对适用于VS2015 / Blend中的WPF。仅供参考,我正在添加链接文章中的一些信息,因为很多时候博客的链接会在很多年后消失。
AttachedPropertyBrowsableWhenAttributePresentAttribute
此属性允许您指定附加属性显示 当所选项目具有给定时,在属性浏览器中 属性适用于它。如果属性具有默认值,则表示该属性 值也必须与默认值不同。
在上面的示例中,传入“MyCustomAttribute”作为 要在下面选择CustomLabel时要查找的属性 设计师,属性浏览器将显示ShowWhenCustomAttribute 附属财产然而它不会 选择了CustomLabelNoCustomAttribute:
[MyCustomAttribute]
public class CustomLabel : Label
{
}
public class CustomLabelNoCustomAttribute : Label
{
}
AttachedPropertyBrowsableForChildrenAttribute
此属性指示附加属性应该可用于给定控件的子级。这个属性有两种主要的风格。一个包含后代,一个不包含后代。正如您所料,包括后代在内的所有儿童或仅包括对照的直接子女。
[AttachedPropertyBrowsableForChildrenAttribute(IncludeDescendants=true)]
public static int GetShowForChildrenDeep(UIElement element)
{
return (int)element.GetValue(ShowForChildrenDeepProperty);
}
AttachedPropertyBrowsableForType
此属性允许您指定在设计器中选择从该类型派生的给定类型时显示附加属性。以下示例将在选择任何Grid,派生Grid,Button或派生Button时显示附加属性。
[AttachedPropertyBrowsableForType(typeof(Grid))]
[AttachedPropertyBrowsableForType(typeof(Button))]
public static int GetShowForTypes(UIElement element)
{
return (int)element.GetValue(ShowForTypesProperty);
}
以下是MSDN文档链接:
https://msdn.microsoft.com/en-us/library/system.windows.attachedpropertybrowsableforchildrenattribute(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.windows.attachedpropertybrowsablefortypeattribute(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.windows.attachedpropertybrowsablewhenattributepresentattribute(v=vs.110).aspx