wpf
Markup Extensions
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>