Sök…


parametrar

Metod Beskrivning
ProvideValue MarkupExtension-klassen har bara en metod som bör åsidosättas, XAML-parser använder sedan värdet som tillhandahålls av denna metod för att utvärdera resultatet av markup-förlängningen.

Anmärkningar

En markeringsförlängning kan implementeras för att tillhandahålla värden för egenskaper i en attributanvändning, egenskaper i en egenskapselementanvändning eller båda.

När den används för att tillhandahålla ett attributvärde, är syntaxen som skiljer en markeringsförlängningssekvens till en XAML-processor närvaron av öppnings- och stängningsbockarna ({och}). Typen av markeringsförlängning identifieras sedan av strängtoken omedelbart efter den öppna krulta stången.

När det används i egenskapselementsyntax är en markeringsförlängning visuellt densamma som alla andra element som används för att tillhandahålla ett egenskapselementvärde: en XAML-elementdeklaration som hänvisar till markeringsförlängningsklassen som ett element, inneslutet inom vinkelfästena (<>).

Mer information finns på https://msdn.microsoft.com/en-us/library/ms747254(v=vs.110).aspx

Markup-förlängning som används med IValueConverter

En av de bästa användningarna för markeringstillägg är för enklare användning av IValueConverter. I exemplet nedan är BoolToVisibilityConverter en värdekonverterare men eftersom den är instansoberoende kan den användas utan de normala haslarna för en värdekonverterare med hjälp av markeringsförlängning. I XAML bara använda

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

och du kan ställa objektets synlighet till boolvärde.

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;
        }
    }

XAML-definierade markeringsförlängningar

Det finns fyra fördefinierade markeringsförlängningar i XAML:

x:Type anger typobjektet för den namngivna typen. Denna anläggning används oftast i stilar och mallar.

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

x:Static producerar statiska värden. Värdena kommer från värdetypkodenheter som inte direkt är typen av en målegenskaps värde, men kan utvärderas till den typen.

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

x:Null anger null som ett värde för en egenskap och kan användas antingen för attribut eller egenskaper för elementelement.

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

x:Array ger stöd för att skapa allmänna matriser i XAML-syntax, för fall där samlingsstödet som tillhandahålls av WPF-baselement och kontrollmodeller medvetet inte används.

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow