Recherche…


Paramètres

Méthode La description
ProvideValue La classe MarkupExtension ne possède qu'une méthode qui doit être remplacée, l'analyseur XAML utilise alors la valeur fournie par cette méthode pour évaluer le résultat de l'extension du balisage.

Remarques

Une extension de balisage peut être implémentée pour fournir des valeurs aux propriétés dans une utilisation d'attribut, des propriétés dans l'utilisation d'un élément de propriété ou les deux.

Lorsqu'elle est utilisée pour fournir une valeur d'attribut, la syntaxe qui distingue une séquence d'extension de balisage d'un processeur XAML est la présence des accolades ouvrantes et fermantes ({et}). Le type d'extension de balisage est ensuite identifié par le jeton de chaîne immédiatement après l'accolade d'ouverture.

Lorsqu'elle est utilisée dans une syntaxe d'élément de propriété, une extension de balisage est visuellement identique à tout autre élément utilisé pour fournir une valeur d'élément de propriété: une déclaration d'élément XAML qui référence la classe d'extension de balisage en tant qu'élément entre crochets (<>).

Pour plus d'informations, visitez https://msdn.microsoft.com/en-us/library/ms747254(v=vs.110).aspx

Extension de balisage utilisée avec IValueConverter

L'une des meilleures utilisations des extensions de balisage est une utilisation plus facile de IValueConverter. Dans l'exemple ci-dessous, BoolToVisibilityConverter est un convertisseur de valeur, mais comme il est indépendant de l'instance, il peut être utilisé sans les haches normales d'un convertisseur de valeur à l'aide de l'extension de balisage. En XAML, utilisez juste

Visibility="{Binding [BoolProperty], Converter={[xmlns]:BoolToVisibilityConverter}}"

et vous pouvez définir la visibilité de l'élément sur la valeur bool.

public class BoolToVisibilityConverter : MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is bool)
                return (bool)value ? Visibility.Visible : Visibility.Collapsed;
            else
                return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is Visibility)
            {
                if ((Visibility)value == Visibility.Visible)
                    return true;
                else
                    return false;
            }
            else
                return false;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }

Extensions de balisage définies par XAML

Il existe quatre extensions de balisage prédéfinies dans XAML:

x:Type fournit l'objet Type pour le type nommé. Cette fonctionnalité est utilisée le plus fréquemment dans les styles et les modèles.

<object property="{x:Type prefix:typeNameValue}" .../>

x:Static produit des valeurs statiques. Les valeurs proviennent d'entités de code de type valeur qui ne sont pas directement du type de la valeur d'une propriété cible, mais peuvent être évaluées avec ce type.

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

x:Null spécifie null comme valeur pour une propriété et peut être utilisé pour les attributs ou les valeurs d'élément de propriété.

<object property="{x:Null}" .../>

x:Array charge la création de tableaux généraux dans la syntaxe XAML, dans les cas où la prise en charge de la collection fournie par les éléments de base WPF et les modèles de contrôle n'est délibérément pas utilisée.

<x:Array Type="typeName">
  arrayContents
</x:Array>


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow