TypeConverter und XAMLTypeConverters and XAML

In diesem Thema wird der Zweck der Typkonvertierung aus einer Zeichenfolge in eine allgemeinere Funktion der XAML-Sprache erläutert.This topic introduces the purpose of type conversion from string as a general XAML language feature. In .NET Framework die TypeConverter Klasse einen bestimmten Zweck dient, als Teil der Implementierung für eine verwaltete benutzerdefinierte Klasse, die als Eigenschaftswert in der XAML-Attributverwendung verwendet werden kann.In the .NET Framework, the TypeConverter class serves a particular purpose as part of the implementation for a managed custom class that can be used as a property value in XAML attribute usage. Wenn Sie eine benutzerdefinierte Klasse schreiben und Instanzen dieser Klasse als festlegbare XAML-Attributwerte verwendet werden sollen, müssen Sie möglicherweise Anwenden einer TypeConverterAttribute in Ihrer Klasse schreiben Sie eine benutzerdefinierte TypeConverter Klasse oder beides.If you write a custom class, and you want instances of your class to be usable as XAML settable attribute values, you might need to apply a TypeConverterAttribute to your class, write a custom TypeConverter class, or both.

TypkonvertierungskonzepteType Conversion Concepts

XAML- und ZeichenfolgenwerteXAML and String Values

Wenn Sie einen Attributwert in einer XAML-Datei festlegen, ist der ursprüngliche Typ dieses Werts eine Zeichenfolge in reinem Text.When you set an attribute value in a XAML file, the initial type of that value is a string in pure text. Auch andere Primitive wie z. B. Double sind anfänglich Textzeichenfolgen für einen XAML-Prozessor.Even other primitives such as Double are initially text strings to a XAML processor.

Ein XAML-Prozessor benötigt zwei Angaben, um einen Attributwert zu verarbeiten.A XAML processor needs two pieces of information in order to process an attribute value. Die erste Angabe ist der Werttyp der Eigenschaft, die festgelegt wird.The first piece of information is the value type of the property that is being set. Jede Zeichenfolge, die einen Attributwert definiert, und in XAML verarbeitet wird, muss schließlich umgewandelt werden oder zu einem Wert dieses Typs aufgelöst werden.Any string that defines an attribute value and that is processed in XAML must ultimately be converted or resolved to a value of that type. Wenn es sich beim Wert um einen Primitiv handelt, den der XAML-Parser versteht (beispielsweise ein numerischer Wert), wird versucht, eine direkte Konvertierung der Zeichenfolge vorzunehmen.If the value is a primitive that is understood by the XAML parser (such as a numeric value), a direct conversion of the string is attempted. Wenn es sich bei dem Wert um eine Enumeration handelt, wird mithilfe der Zeichenfolge nach einer Namensübereinstimmung mit einer benannten Konstante in dieser Enumeration gesucht.If the value is an enumeration, the string is used to check for a name match to a named constant in that enumeration. Wenn es sich beim Wert weder um einen primitiven Typ handelt, den der Parser versteht, noch um eine Enumeration, muss der zutreffende Typ einen Typ oder Wert bereitstellen können, der auf einer konvertierten Zeichenfolge beruht.If the value is neither a parser-understood primitive nor an enumeration, then the type in question must be able to provide an instance of the type, or a value, based on a converted string. Dies erfolgt durch Angabe einer Typkonverterklasse.This is done by indicating a type converter class. Der Typkonverter ist eine Hilfsklasse zum Bereitstellen von Werten einer anderen Klasse im XAML-Szenario und möglicherweise auch für Codeaufrufe in .NET-Code.The type converter is effectively a helper class for providing values of another class, both for the XAML scenario and also potentially for code calls in .NET code.

Verwenden von vorhandenem Typkonvertierungsverhalten in XAMLUsing Existing Type Conversion Behavior in XAML

Je nach Ihren Vorkenntnissen der zugrunde liegenden XAML-Konzepte verwenden Sie möglicherweise bereits das Typkonvertierungsverhalten in der grundlegenden XAML-Anwendung, ohne es zu wissen.Depending on your familiarity with the underlying XAML concepts, you may already be using type conversion behavior in basic application XAML without realizing it. WPF definiert z.B. buchstäblich Hunderte von Eigenschaften, die einen Wert vom Typ akzeptieren Point.For instance, WPF defines literally hundreds of properties that take a value of type Point. Ein Point ist ein Wert, der eine Koordinate in einem zweidimensionalen Koordinatenraum beschreibt, und es eigentlich nur zwei wichtige Eigenschaften hat: X und Y.A Point is a value that describes a coordinate in a two-dimensional coordinate space, and it really just has two important properties: X and Y. Wenn Sie einen Punkt in XAML angeben, geben Sie ihn als eine Zeichenfolge mit einem Trennzeichen (in der Regel ein Komma) zwischen den X und Y Werte, die Sie bereitstellen.When you specify a point in XAML, you specify it as a string with a delimiter (typically a comma) between the X and Y values you provide. Beispiel: <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"/>.For example: <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"/>.

Auch dieser einfache Typ von Point und dessen einfache Verwendung in XAML erfordern einen Typkonverter.Even this simple type of Point and its simple usage in XAML involve a type converter. In diesem Fall ist, die die Klasse PointConverter.In this case that is the class PointConverter.

Der Typkonverter für Point definiert die Klasse auf optimiert die Verwendungsmöglichkeiten von Markup von allen Eigenschaften, die annehmen Point.The type converter for Point defined at the class level streamlines the markup usages of all properties that take Point. Ohne Typkonverter benötigen Sie das folgende, viel ausführlichere Markup für dasselbe zuvor gezeigte Beispiel:Without a type converter here, you would need the following much more verbose markup for the same example shown previously:

<LinearGradientBrush>
  <LinearGradientBrush.StartPoint>
    <Point X="0" Y="0"/>
  </LinearGradientBrush.StartPoint>
  <LinearGradientBrush.EndPoint>
    <Point X="1" Y="1"/>
  </LinearGradientBrush.EndPoint>
</LinearGradientBrush>

Die Verwendung der Zeichenfolge für die Typkonvertierung oder die einer ausführlicheren entsprechenden Syntax ist eine Stilfrage beim Programmieren.Whether to use the type conversion string or a more verbose equivalent syntax is generally a coding style choice. Der XAML-Tool-Workflow könnte auch beeinflussen, wie Werte festgelegt werden.Your XAML tooling workflow might also influence how values are set. Einige XAML-Tools neigen dazu, die ausführlichste Form von Markup auszugeben, da ein Roundtrip zu Designeransichten oder zum eigenen Serialisierungsmechanismus einfacher ist.Some XAML tools tend to emit the most verbose form of the markup because it is easier to round-trip to designer views or its own serialization mechanism.

Vorhandenen Typkonverter können in der Regel auf WPF- und .NET Framework-Typen ermittelt werden, durch Prüfen auf eine Klasse (oder Eigenschaft) das Vorhandensein einer angewendeten TypeConverterAttribute.Existing type converters can generally be discovered on WPF and .NET Framework types by checking a class (or property) for the presence of an applied TypeConverterAttribute. Dieses Attribut benennt die Klasse, die den unterstützenden Typkonverter für Werte dieses Typs darstellt, für XAML-Zwecke sowie für mögliche andere Zwecke.This attribute will name the class that is the supporting type converter for values of that type, for XAML purposes as well as potentially other purposes.

Typkonverter und MarkuperweiterungenType Converters and Markup Extensions

Markuperweiterungen und Typkonverter füllen orthogonale Rollen in Bezug auf das Verhalten des XAML-Prozessors und die Szenarios, auf die sie auf angewendet werden.Markup extensions and type converters fill orthogonal roles in terms of XAML processor behavior and the scenarios that they are applied to. Obwohl der Kontext für die Verwendung von Markuperweiterungen verfügbar ist, wird das Typkonvertierungsverhalten von Eigenschaften, bei denen eine Markuperweiterung einen Wert bereitstellt, in der Regel nicht in den Implementierungen der Markuperweiterung überprüft.Although context is available for markup extension usages, type conversion behavior of properties where a markup extension provides a value is generally is not checked in the markup extension implementations. Das heißt, auch wenn eine Markuperweiterung eine Textzeichenfolge als zurückgibt seine ProvideValue auszugeben, Typkonvertierungsverhalten für diese Zeichenfolge entsprechend der auf eine bestimmte Eigenschaft oder der Werttyp der Eigenschaft angewendet wird nicht aufgerufen, in der Regel wird des Zwecks einer Markuperweiterung an Prozess ein Zeichenfolge und ein Objekt ohne beteiligten Typkonverter zurück.In other words, even if a markup extension returns a text string as its ProvideValue output, type conversion behavior on that string as applied to a specific property or property value type is not invoked, Generally, the purpose of a markup extension is to process a string and return an object without any type converter involved.

Eine allgemeine Situation, in der eine Markuperweiterung statt einem Typkonverter erforderlich ist, besteht im Erstellen eines Verweises auf ein vorhandenes Objekt.One common situation where a markup extension is necessary rather than a type converter is to make a reference to an object that already exists. Ein zustandsloser Typkonverter könnte bestenfalls nur eine neue Instanz genieren, die möglicherweise nicht gewünscht ist.At best, a stateless type converter could only generate a new instance, which might not be desirable. Weitere Informationen über Markuperweiterungen finden Sie unter Markuperweiterungen und WPF XAML.For more information on markup extensions, see Markup Extensions and WPF XAML.

Systemeigene TypkonverterNative Type Converters

In WPF- und .NET Framework-Implementierungen des XAML-Parsers gibt es bestimmte Typen, die über eine native Typkonvertierungsverarbeitung verfügen. Diese Typen werden jedoch herkömmlich nicht als primitive Typen angesehen.In the WPF and .NET Framework implementation of the XAML parser, there are certain types that have native type conversion handling, yet are not types that might conventionally be thought of as primitives. Ein Beispiel eines solchen Typs ist DateTime.An example of such a type is DateTime. Der Grund dafür basiert auf der Funktionsweise der .NET Framework-Architektur: der Typ DateTime in "mscorlib", die grundlegendste Bibliothek in .NET definiert ist.The reason for this is based on how the .NET Framework architecture works: the type DateTime is defined in mscorlib, the most basic library in .NET. DateTime darf nicht mit einem Attribut zu attribuieren, die aus einer anderen Assembly stammt, eine Abhängigkeit einführt (TypeConverterAttribute stammt aus dem System), damit der gewöhnliche Typkonverter-Ermittlungsmechanismus durch die Attributierung nicht unterstützt wird.DateTime is not permitted to be attributed with an attribute that comes from another assembly that introduces a dependency (TypeConverterAttribute is from System) so the usual type converter discovery mechanism by attributing cannot be supported. Stattdessen verfügt der XAML-Parser über eine Liste von Typen, für die diese native Verarbeitung erforderlich ist, und verarbeitet diese Typen ähnlich wie echte primitive Typen.Instead, the XAML parser has a list of types that need such native processing and processes these similarly to how the true primitives are processed. (Im Fall von DateTime Dies umfasst einen Aufruf von Parse.)(In the case of DateTime this involves a call to Parse.)

Implementieren eines TypkonvertersImplementing a Type Converter

TypeConverterTypeConverter

In der Point im bereits erwähnten Beispiel, die Klasse PointConverter erwähnt wurde.In the Point example given previously, the class PointConverter was mentioned. Für .NET-Implementierungen von XAML, sind alle Typkonverter für XAML-Zwecke verwendet werden, die von der Basisklasse abgeleitete Klassen TypeConverter.For .NET implementations of XAML, all type converters that are used for XAML purposes are classes that derive from the base class TypeConverter. Die TypeConverter -Klasse gab es in .NET Framework-Versionen, die das Vorhandensein des XAML vorausgehen, eines der ursprünglichen Verwendungsweisen bestand darin die zeichenfolgenkonvertierung für Eigenschaftendialogfelder in visuellen Designern bereitzustellen.The TypeConverter class existed in versions of .NET Framework that precede the existence of XAML; one of its original usages was to provide string conversion for property dialogs in visual designers. Für XAML, die Rolle des TypeConverter wird erweitert, damit die Basisklasse für Konvertierungen aus to- und from-Zeichenfolge, mit denen möglicherweise einen Run-Time-Wert, der einer bestimmten Objekteigenschaft zurück in eine Zeichenfolge für das Verarbeiten und Analysieren eines Zeichenfolgenattributwerts die Serialisierung als Attribut.For XAML, the role of TypeConverter is expanded to include being the base class for to-string and from-string conversions that enable parsing a string attribute value, and possibly processing a run-time value of a particular object property back into a string for serialization as an attribute.

TypeConverter definiert vier Member, die für die Konvertierung in und aus Zeichenfolgen für XAML-Verarbeitungszwecke relevant sind:TypeConverter defines four members that are relevant for converting to and from strings for XAML processing purposes:

Die wichtigste Methode ist ConvertFrom.Of these, the most important method is ConvertFrom. Diese Methode konvertiert die Eingabezeichenfolge in den erforderlichen Objekttyp.This method converts the input string to the required object type. Streng genommen ist der ConvertFrom -Methode kann implementiert werden, um eine viel breitere Palette von Typen in den vom Konverter beabsichtigten Zieltyp zu konvertieren, und somit für Zwecke, die über XAML hinausgehen werden sollen, z.B. die Unterstützung von Konvertierungen zur Laufzeit, sondern für XAML-Zwecke Es ist nur der Codepfad, der verarbeiten kann eine String Eingabe, die wichtig ist.Strictly speaking, the ConvertFrom method could be implemented to convert a much wider range of types into the converter's intended destination type, and thus serve purposes that extend beyond XAML such as supporting run-time conversions, but for XAML purposes it is only the code path that can process a String input that matters.

Die nächste wichtigste Methode ist ConvertTo.The next most important method is ConvertTo. Wenn eine Anwendung in eine Markupdarstellung umgewandelt wird (z. B. Wenn sie in XAML als Datei gespeichert ist), ConvertTo ist verantwortlich für die Erstellung einer Markupdarstellung.If an application is converted to a markup representation (for instance, if it is saved to XAML as a file), ConvertTo is responsible for producing a markup representation. In diesem Fall der Codepfad, der für XAML wichtig ist, wenn Sie übergeben eine destinationType von String .In this case, the code path that matters for XAML is when you pass a destinationType of String .

CanConvertTo und CanConvertFrom sind Unterstützungsmethoden, die verwendet werden, wenn ein Dienst die Funktionen der TypeConverter -Implementierung abfragt.CanConvertTo and CanConvertFrom are support methods that are used when a service queries the capabilities of the TypeConverter implementation. Sie müssen diese Methoden implementieren, um true für typspezifische Klassen zurückzugeben, welche die entsprechenden Konvertierungsmethoden Ihres Konverters unterstützen.You must implement these methods to return true for type-specific cases that the equivalent conversion methods of your converter support. Für XAML-Zwecke bedeutet dies in der Regel den String -Typ.For XAML purposes, this generally means the String type.

Kulturinformations- und Typkonverter für XAMLCulture Information and Type Converters for XAML

Jede TypeConverter Implementierung kann über eine eigene Interpretation von was eine gültige Zeichenfolge für eine Konvertierung ausmacht und können auch verwenden oder die als Parameter übergebene typbeschreibung ignorieren.Each TypeConverter implementation can have its own interpretation of what constitutes a valid string for a conversion, and can also use or ignore the type description passed as parameters. Im Hinblick auf die Kultur und das Konvertieren von XAML-Typen gibt es eine wichtige Überlegung.There is an important consideration with regard to culture and XAML type conversion. Die Verwendung von lokalisierbaren Zeichenfolgen als Attributwerte wird von XAML vollständig unterstützt.Using localizable strings as attribute values is entirely supported by XAML. Die Verwendung lokalisierbarer Zeichenfolgen als Typkonvertereingabe mit bestimmten kulturellen Anforderungen wird nicht unterstützt, weil Typkonverter für XAML-Attributwerte ein zwangsläufig festes Sprachverarbeitungsverhalten umfassen, in dem die en-US-Kultur verwendet wird.But using that localizable string as type converter input with specific culture requirements is not supported, because type converters for XAML attribute values involve a necessarily fixed-language parsing behavior, using en-US culture. Weitere Informationen zu den Gründe für diese Einschränkung finden Sie in der XAML-Sprachspezifikation ([MS-XAML]).For more information on the design reasons for this restriction, you should consult the XAML language specification ([MS-XAML]).

Da die Kultur ein Problem darstellen kann, verwenden einige Kulturen ein Komma als Dezimaltrennzeichen für Zahlen.As an example where culture can be an issue, some cultures use a comma as their decimal point delimiter for numbers. Dies steht mit dem Verhalten in Konflikt, das viele der WPF XAML-Typkonverter aufweisen und darin besteht, ein Komma als Trennzeichen zu verwenden (auf Grundlage geschichtlicher Präzedenzfälle wie die allgemeine X,Y-Form oder durch Trennzeichen getrennte Listen).This will collide with the behavior that many of the WPF XAML type converters have, which is to use a comma as a delimiter (based on historical precedents such as the common X,Y form, or comma delimited lists). Sogar die Übergabe einer Kultur im umgebenden XAML (das Festlegen von Language oder xml:lang auf die Kultur sl-SI, ein Beispiel für eine Kultur, die ein Komma für Dezimalstellen so verwendet) löst das Problem nicht.Even passing a culture in the surrounding XAML (setting Language or xml:lang to the sl-SI culture, an example of a culture that uses a comma for decimal in this way) does not solve the issue.

Implementieren von ConvertFromImplementing ConvertFrom

Damit die TypeConverter -Methode für diesen Konverter als eine ConvertFrom -Implementierung verwendet werden kann, die XAML unterstützt, muss sie eine Zeichenfolge als den value -Parameter akzeptieren.To be usable as a TypeConverter implementation that supports XAML, the ConvertFrom method for that converter must accept a string as the value parameter. Wenn die Zeichenfolge in einem gültigen formatieren, und konvertiert werden kann, indem die TypeConverter -Implementierung, und klicken Sie dann auf das zurückgegebene Objekt muss eine Umwandlung in den von der Eigenschaft erwarteten Typ unterstützen.If the string was in valid format, and can be converted by the TypeConverter implementation, then the returned object must support a cast to the type expected by the property. Andernfalls muss die ConvertFrom -Implementierung nullzurückgeben.Otherwise, the ConvertFrom implementation must return null.

Jede TypeConverter Implementierung kann über eine eigene Interpretation von was eine gültige Zeichenfolge für eine Konvertierung ausmacht und können auch verwenden oder ignorieren Sie den Typ typbeschreibung oder kulturkontexte als Parameter übergeben.Each TypeConverter implementation can have its own interpretation of what constitutes a valid string for a conversion, and can also use or ignore the type description or culture contexts passed as parameters. Bei der WPF-XAML-Verarbeitung werden jedoch möglicherweise nicht in allen Fällen Werte an den Kontext der Typbeschreibung weitergegeben. Die auf xml:lang basierende Kultur wird möglicherweise auch nicht weitergegeben.However, the WPF XAML processing might not pass values to the type description context in all cases, and also might not pass culture based on xml:lang.

Hinweis

Verwenden Sie auf gar keinen Fall die geschweiften Klammern,vor allem { , als ein mögliches Element Ihres Zeichenfolgenformats.Do not use the curly brace characters, particularly {, as a possible element of your string format. Diese Zeichen sind als ein Eintrag reserviert und dienen dem Beenden einer Markuperweiterungssequenz.These characters are reserved as the entry and exit for a markup extension sequence.

Implementieren von ConvertToImplementing ConvertTo

ConvertTo wird möglicherweise für die Serialisierungsunterstützung verwendet.ConvertTo is potentially used for serialization support. Die Serialisierungsunterstützung durch ConvertTo für Ihren benutzerdefinierten Typ und dessen Typkonverter ist nicht unbedingt erforderlich.Serialization support through ConvertTo for your custom type and its type converter is not an absolute requirement. Wenn Sie jedoch ein Steuerelement implementieren oder die Serialisierung als Bestandteil der Features oder zum Entwerfen Ihrer Klasse verwenden, sollten Sie ConvertToimplementieren.However, if you are implementing a control, or using serialization of as part of the features or design of your class, you should implement ConvertTo.

Verwendet werden kann als eine TypeConverter -Implementierung, XAML, unterstützt, die ConvertTo -Methode für diesen Konverter muss eine Instanz vom Typ (oder einen Wert) unterstützt akzeptieren, als die value Parameter.To be usable as a TypeConverter implementation that supports XAML, the ConvertTo method for that converter must accept an instance of the type (or a value) being supported as the value parameter. Wenn die destinationType Parameter ist der Typ String, und klicken Sie dann das zurückgegebene Objekt umgewandelt werden kann muss String.When the destinationType parameter is the type String, then the returned object must be able to be cast as String. Die zurückgegebene Zeichenfolge muss einen serialisierten Wert von valuedarstellen.The returned string must represent a serialized value of value. Im Idealfall muss das Serialisierungsformat, das Sie auswählen, den gleichen Wert zu generieren, wenn diese Zeichenfolge übergeben wurden, kann die ConvertFrom -Implementierung desselben Konverters, ohne erhebliche Informationsverluste.Ideally, the serialization format you choose should be capable of generating the same value if that string were passed to the ConvertFrom implementation of the same converter, without significant loss of information.

Wenn der Wert kann nicht serialisiert werden, oder der Konverter keine Serialisierung unterstützt die ConvertTo Implementierung muss zurückgeben null, und darf in diesem Fall einer Ausnahme.If the value cannot be serialized, or the converter does not support serialization, the ConvertTo implementation must return null, and is permitted to throw an exception in this case. Aber wenn Sie Ausnahmen auslösen, sollten Sie melden, dass die Unfähigkeit, diese Konvertierung als Teil Ihrer CanConvertTo Implementierung, damit die bewährte Methode eine Überprüfung mit CanConvertTo zuerst zum Vermeiden von Ausnahmen werden unterstützt.But if you do throw exceptions, you should report the inability to use that conversion as part of your CanConvertTo implementation so that the best practice of checking with CanConvertTo first to avoid exceptions is supported.

Wenn destinationType Parameter ist nicht vom Typ String, Sie können Ihre eigene konverterverarbeitung auswählen.If destinationType parameter is not of type String, you can choose your own converter handling. Sie würden in der Regel wiederherstellen, die grundlegende implementierungsverarbeitung vor, die in den grundlegendsten ConvertTo eine bestimmte Ausnahme auslöst.Typically, you would revert to base implementation handling, which in the basemost ConvertTo raises a specific exception.

Implementieren von CanConvertToImplementing CanConvertTo

Ihre Implementierung CanConvertTo sollte true für destinationType vom Typ Stringzurückgeben und andernfalls die grundlegende Implementierung ableiten.Your CanConvertTo implementation should return true for destinationType of type String, and otherwise defer to the base implementation.

Implementieren von CanConvertFromImplementing CanConvertFrom

Ihre Implementierung CanConvertFrom sollte true für sourceType vom Typ Stringzurückgeben und andernfalls die grundlegende Implementierung ableiten.Your CanConvertFrom implementation should return true for sourceType of type String, and otherwise defer to the base implementation.

Anwenden von TypeConverterAttributeApplying the TypeConverterAttribute

In der Reihenfolge für Ihr benutzerdefinierter Typkonverter als der agierende Typkonverter für eine benutzerdefinierte Klasse von einem XAML-Prozessor, müssen Sie anwenden, die .NET Framework-Attribut.NET Framework attribute TypeConverterAttribute auf Ihre Klassendefinition.In order for your custom type converter to be used as the acting type converter for a custom class by a XAML processor, you must apply the .NET Framework-Attribut.NET Framework attribute TypeConverterAttribute to your class definition. Beim ConverterTypeName , den Sie über das Attribut angeben, muss es sich um den Typnamen Ihres benutzerdefinierten Typkonverters handeln.The ConverterTypeName that you specify through the attribute must be the type name of your custom type converter. Wenn ein XAML-Prozessor nach Anwendung dieses Attributs Werte verarbeitet, bei denen der Eigenschaftstyp Ihren benutzerdefinierten Klassentyp verwendet, kann es Zeichenfolgen eingeben und Objektinstanzen zurückgeben.With this attribute applied, when a XAML processor handles values where the property type uses your custom class type, it can input strings and return object instances.

Sie können auch einen Typkonverter auf Grundlage einzelner Eigenschaften bereitstellen.You can also provide a type converter on a per-property basis. Anstelle ein .NET Framework-Attribut.NET Framework attribute TypeConverterAttribute auf die Klassendefinition anzuwenden, wenden Sie es auf eine Eigenschaftsdefinition (die Hauptdefinition, nicht die darin enthaltenen get/set -Implementierungen) an.Instead of applying a .NET Framework-Attribut.NET Framework attribute TypeConverterAttribute to the class definition, apply it to a property definition (the main definition, not the get/set implementations within it). Der Eigenschaftstyp muss mit dem Typ übereinstimmen, der durch Ihren benutzerdefinierten Typkonverter verarbeitet wird.The type of the property must match the type that is processed by your custom type converter. Wenn dieses Attribut angewendet ist, wenn ein XAML-Prozessor Werte dieser Eigenschaft verarbeitet, kann es Eingabezeichenfolgen verarbeiten und Objektinstanzen zurückgeben.With this attribute applied, when a XAMLprocessor handles values of that property, it can process input strings and return object instances. Die Typkonvertertechnik auf Grundlage einzelner Eigenschaften ist besonders nützlich, wenn Sie einen Eigenschaftentyp aus Microsoft .NET Framework oder eine andere Bibliothek auch, in dem Sie die Klassendefinition weder steuern und können nicht angewendet werden, verwenden eine TypeConverterAttribute vorhanden.The per-property type converter technique is particularly useful if you choose to use a property type from Microsoft .NET Framework or from some other library where you cannot control the class definition and cannot apply a TypeConverterAttribute there.

Siehe auchSee also