Как отобразить вложенные свойства в Браузере свойств смеси для Silverlight? - PullRequest
1 голос
/ 18 января 2010

Я создал пару пользовательских элементов управления, и их childresn правильно отображает вложенные свойства в Обозревателе свойств для WPF, но в silverlight ни одно из вложенных свойств не отображается в Обозревателе свойств.

Как добавить поддержку времени разработки для вложенныхсвойства в silverlight?

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Похоже, могут быть некоторые атрибуты, с которыми можно работать, чтобы пользовательские свойства отображались в конструкторе:
http://blogs.msdn.com/jnak/archive/2008/01/17/showing-attached-properties-in-the-cider-wpf-designer.aspx

Я не пробовал, хотя и не уверен, будет ли он работать с Silverlight.

0 голосов
/ 05 июля 2017

Henrik's определенно работает на WPF в VS2015 / Blend. Просто для справки, я добавляю некоторую информацию из связанной статьи, потому что столько раз ссылки на блоги умирают через несколько лет.

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

Этот атрибут позволяет вам указать, что ваше присоединенное свойство будет отображаться, когда данный тип или типы, производные от этого типа, выбраны в конструкторе. В следующем примере ваше присоединенное свойство будет отображаться, когда выбрана любая Сетка, производная Сетка, Кнопка или производная кнопка.

[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

...