Je viens de rencontrer AttachedPropertyBrowsableWhenAttributePresentAttribute, mais je ne vois pas quand cela serait utile. Des idéaux?Avez-vous un exemple réel de l'utilisation de AttachedPropertyBrowsableWhenAttributePresentAttribute?
Répondre
Browsable signifie qu'un concepteur, comme le concepteur WPF de Visual Studio nommé Cider, affiche la propriété dans le concepteur. Puisque les propriétés attachées ne sont pas une propriété réelle d'un type et peuvent être appliquées à presque le type, il est difficile pour le concepteur de savoir quand montrer ou ne pas montrer la propriété. Ces attributs permettent à un développeur de faire savoir au concepteur qu'une certaine propriété jointe doit apparaître dans le concepteur. En d'autres termes: Browsable. Cet attribut spécifique permet au concepteur de savoir que cette propriété attachée doit pouvoir être consultée sur les types auxquels l'attribut spécifié est appliqué.
La propriété ci-joint:
public class WhenAttributePresentTestControl : Grid
{
public static readonly DependencyProperty ShowWhenCustomAttributePresentProperty = DependencyProperty.RegisterAttached(
"ShowWhenCustomAttributePresent",
typeof(int),
typeof(WhenAttributePresentTestControl));
public static void SetShowWhenCustomAttributePresent(UIElement element, int value)
{
element.SetValue(ShowWhenCustomAttributePresentProperty, value);
}
[AttachedPropertyBrowsableWhenAttributePresentAttribute(typeof(MyCustomAttribute))]
public static int GetShowWhenCustomAttributePresent(UIElement element)
{
return (int)element.GetValue(ShowWhenCustomAttributePresentProperty);
}
}
Exemple d'utilisation:
[MyCustomAttribute]
public class CustomLabel : Label
{
}
public class CustomLabelNoCustomAttribute : Label
{
}
Le concepteur montrera la ShowWhenCustomAttributePresent propriété attachée dans l'éditeur de propriété pour le CustomLabel, mais pas pour CustomLabelNoCustomAttribute.
utilisation réelle: Je ne trouve pas l'utilisation de cet attribut dans le framework .Net avec réflecteur.
remarque drôle: Apparemment, il est aussi le longest type name du framework .Net 3.0
Merci, il semble juste étrange que cela dépend de mettre un attribut de la classe cible, lorsque le principal point de propriétés attachées est d'éviter d'ajouter "truc" aux contrôles juste parce qu'ils peuvent être utilisés comme un de vos enfants. –