Szukaj…


Parametry

metoda Opis
ProvideValue Klasa MarkupExtension ma tylko jedną metodę, którą należy przesłonić, parser XAML używa następnie wartości podanej przez tę metodę do oceny wyniku rozszerzenia znaczników.

Uwagi

Rozszerzenie znaczników może być zaimplementowane w celu zapewnienia wartości właściwości w użyciu atrybutu, właściwości w użyciu elementu właściwości lub obu tych elementów.

W przypadku podania wartości atrybutu składnia, która odróżnia sekwencję rozszerzenia znaczników od procesora XAML, to obecność nawiasów otwierających i zamykających nawiasów klamrowych ({i}). Rodzaj rozszerzenia znaczników jest następnie identyfikowany przez token łańcucha bezpośrednio po otwierającym nawiasie klamrowym.

W przypadku użycia w składni elementu właściwości rozszerzenie znaczników jest wizualnie takie samo, jak każdy inny element używany do zapewnienia wartości elementu właściwości: deklaracja elementu XAML, która odwołuje się do klasy rozszerzenia znacznika jako elementu, zawarta w nawiasach kątowych (<>).

Aby uzyskać więcej informacji, odwiedź https://msdn.microsoft.com/en-us/library/ms747254(v=vs.110).aspx

Rozszerzenie znaczników używane z IValueConverter

Jednym z najlepszych zastosowań rozszerzeń znaczników jest łatwiejsze użycie IValueConverter. W poniższym przykładzie BoolToVisibilityConverter jest konwerterem wartości, ale ponieważ jest niezależny od instancji, można go używać bez zwykłych kłopotów konwertera wartości za pomocą rozszerzenia znaczników. W XAML wystarczy użyć

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

i możesz ustawić widoczność przedmiotu na wartość 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;
        }
    }

Rozszerzenia znaczników zdefiniowane w XAML

Istnieją cztery predefiniowane rozszerzenia znaczników w XAML:

x:Type dostarcza obiekt Type dla nazwanego typu. Ta funkcja jest najczęściej używana w stylach i szablonach.

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

x:Static generuje wartości statyczne. Wartości pochodzą od encji kodu typu wartości, które nie są bezpośrednio typem wartości właściwości docelowej, ale mogą być ocenione do tego typu.

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

x:Null określa null jako wartość właściwości i może być używany albo do atrybutów, albo do wartości elementu właściwości.

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

x:Array zapewnia obsługę tworzenia ogólnych tablic w składni XAML, w przypadkach, w których obsługa kolekcji zapewniana przez elementy podstawowe i modele kontrolne WPF nie jest celowo używana.

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow