Zoeken…


parameters

Methode Beschrijving
ProvideValue De klasse MarkupExtension heeft slechts één methode die moet worden genegeerd. XAML parser gebruikt vervolgens de waarde die door deze methode wordt verstrekt om het resultaat van de markup-extensie te evalueren.

Opmerkingen

Een markup-extensie kan worden geïmplementeerd om waarden op te geven voor eigenschappen in een attribuutgebruik, eigenschappen in een gebruik van elementelementen, of beide.

Wanneer gebruikt om een attribuutwaarde op te geven, is de syntaxis die een markup-extensiereeks onderscheidt van een XAML-processor de aanwezigheid van de accolades openen en sluiten ({en}). Het type markup-extensie wordt dan geïdentificeerd door het string-token onmiddellijk na de opening accolade.

Bij gebruik in de syntaxis van het eigenschapselement is een opmaakextensie visueel hetzelfde als elk ander element dat wordt gebruikt om een waarde van een eigenschapselement te leveren: een XAML-elementdeclaratie die verwijst naar de klasse van de opmaakuitbreiding als een element, ingesloten tussen punthaken (<>).

Ga voor meer informatie naar https://msdn.microsoft.com/en-us/library/ms747254(v=vs.110).aspx

Markup-extensie gebruikt met IValueConverter

Een van de beste toepassingen voor markup-extensies is voor eenvoudiger gebruik van IValueConverter. In het onderstaande voorbeeld is BoolToVisibilityConverter een waarde-omzetter, maar omdat het exemplaar onafhankelijk is, kan het worden gebruikt zonder de normale problemen van een waarde-omzetter met behulp van markup-extensie. In XAML gewoon gebruiken

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

en u kunt de zichtbaarheid van items instellen op Bool-waarde.

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-Defined markup extensions

Er zijn vier vooraf gedefinieerde markup-extensies in XAML:

x:Type levert het object Type voor het genoemde type. Deze faciliteit wordt het meest gebruikt in stijlen en sjablonen.

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

x:Static produceert statische waarden. De waarden zijn afkomstig van waardetype code-entiteiten die niet rechtstreeks van het type van de waarde van een doeleigenschap zijn, maar kunnen naar dat type worden geëvalueerd.

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

x:Null geeft null aan als een waarde voor een eigenschap en kan worden gebruikt voor kenmerken of eigenschapselementwaarden.

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

x:Array biedt ondersteuning voor het maken van algemene arrays in XAML-syntaxis, voor gevallen waarin de verzamelingondersteuning van WPF-basiselementen en besturingsmodellen opzettelijk niet wordt gebruikt.

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow