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 der .NET Framework erfüllt die TypeConverter-Klasse einen bestimmten Zweck als Teil der Implementierung für eine verwaltete benutzerdefinierte Klasse, die als Eigenschafts Wert in der XAML-Attribut Verwendung 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 der Klasse als XAML-festleg Bare Attributwerte verwendet werden sollen, müssen Sie möglicherweise eine TypeConverterAttribute auf die Klasse anwenden, eine benutzerdefinierte TypeConverter Klasse schreiben 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, z. b. Double, sind Anfangstext Zeichenfolgen 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 beispielsweise buchstäblich hunderte von Eigenschaften, die einen Wert vom Typ Pointannehmen.For instance, WPF defines literally hundreds of properties that take a value of type Point. Bei einem Point handelt es sich um einen Wert, der eine Koordinate in einem zweidimensionalen Koordinatenraum beschreibt, und er verfügt über zwei wichtige Eigenschaften: 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 Zeichenfolge mit einem Trennzeichen (in der Regel ein Komma) zwischen den X und Y Werten an, die Sie angeben.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"/>.

Selbst diese einfache Art von Point und die einfache Verwendung in XAML umfassen einen Typkonverter.Even this simple type of Point and its simple usage in XAML involve a type converter. In diesem Fall ist dies die-Klasse PointConverter.In this case that is the class PointConverter.

Der Typkonverter für Point, der auf Klassenebene definiert ist, optimiert die Markup Verwendungen aller Eigenschaften, die Pointannehmen.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.

Vorhandene Typkonverter können in der Regel auf WPF-und .NET Framework Typen ermittelt werden, indem eine Klasse (oder Eigenschaft) auf das vorhanden sein eines angewendeten TypeConverterAttributeüberprüft wird.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. Mit anderen Worten, auch wenn eine Markup Erweiterung eine Text Zeichenfolge als ProvideValue Ausgabe zurückgibt, wird das Typkonvertierungs Verhalten für diese Zeichenfolge, das auf eine bestimmte Eigenschaft oder denselben Eigenschafts Werttyp angewendet wird, nicht aufgerufen. in der Regel ist der Zweck einer Markup Erweiterung die Verarbeitung einer Zeichenfolge. und geben ein Objekt zurück, für das kein Typkonverter beteiligt ist.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 hierfür ist die Funktionsweise der .NET Framework Architektur: der Typ DateTime ist in mscorlib definiert, der grundlegendsten Bibliothek in .net.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 attributiert werden, das aus einer anderen Assembly stammt, die eine Abhängigkeit einführt (TypeConverterAttribute ist vom System), sodass der übliche Typkonverter-Ermittlungs Mechanismus durch die Attributierung nicht unterstützt werden kann.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 umfasst dies einen AufrufParse.)(In the case of DateTime this involves a call to Parse.)

Implementieren eines TypkonvertersImplementing a Type Converter

TypeConverterTypeConverter

Im zuvor angegebenen Point Beispiel wurde die-Klasse PointConverter erwähnt.In the Point example given previously, the class PointConverter was mentioned. Für .net-Implementierungen von XAML sind alle Typkonverter, die für XAML-Zwecke verwendet werden, Klassen, die von der Basisklasse TypeConverterabgeleitet werden.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 war in Versionen von .NET Framework vorhanden, die vor dem vorhanden sein von XAML liegen. eine der ursprünglichen Verwendungsmöglichkeiten bestand darin, die Zeichen folgen Konvertierung für Eigenschafts Dialogfelder 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. Bei XAML wird die Rolle von TypeConverter erweitert, um die Basisklasse für die Konvertierung von Zeichen folgen-und Zeichen folgen Konvertierungen zu ermöglichen, die das Verarbeiten eines Zeichen folgen Attribut Werts und ggf. das Verarbeiten eines Lauf Zeitwerts einer bestimmten Objekt Eigenschaft zurück in eine Zeichenfolge für 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 Umstellung von und aus Zeichen folgen für XAML-Verarbeitungszwecke relevant sind:TypeConverter defines four members that are relevant for converting to and from strings for XAML processing purposes:

Dabei ist die wichtigste Methode 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 könnte die ConvertFrom-Methode implementiert werden, um einen viel größeren Bereich von Typen in den gewünschten Zieltyp des Konverters zu konvertieren, und somit Zwecke verarbeiten, die über XAML hinausgehen, wie z. b. das unterstützen von Lauf Zeit Konvertierungen, aber für XAML-Zwecke ist es nur der Codepfad, mit dem eine String Eingabe verarbeitet werden kann.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ächstwichtigste Methode ist ConvertTo.The next most important method is ConvertTo. Wenn eine Anwendung in eine Markup Darstellung konvertiert wird (wenn Sie beispielsweise in XAML als Datei gespeichert wird), ist ConvertTo für die Erstellung einer Markup Darstellung verantwortlich.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 ist der Codepfad, der für XAML wichtig ist, wenn Sie eine destinationType String übergeben.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 der Bedeutung einer gültigen Zeichenfolge für eine Konvertierung verfügen. Außerdem kann Sie die Typbeschreibung, die als Parameter verwendet wird, verwenden oder 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 Format vorliegt und von der TypeConverter-Implementierung konvertiert werden kann, muss das zurückgegebene Objekt 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 eine eigene Interpretation davon aufweisen, was eine gültige Zeichenfolge für eine Konvertierung ausmacht, und kann auch die Typbeschreibung oder Kultur Kontexte verwenden oder ignorieren, die als Parameter verwendet werden.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.

Um als TypeConverter-Implementierung verwendet werden zu können, die XAML unterstützt, muss die ConvertTo-Methode für diesen Konverter eine Instanz des Typs (oder eines Werts) akzeptieren, der als value-Parameter unterstützt wird.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 der destinationType-Parameter der Typ Stringist, muss das zurückgegebene Objekt in der Lage sein, als Stringumgewandelt zu werden.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 value darstellen.The returned string must represent a serialized value of value. Im Idealfall sollte das von Ihnen ausgewählte Serialisierungsformat in der Lage sein, den gleichen Wert zu erzeugen, wenn diese Zeichenfolge ohne erheblichen Verlust von Informationen an die ConvertFrom Implementierung desselben Konverters übermittelt wurde.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 nicht serialisiert werden kann oder der Konverter die Serialisierung nicht unterstützt, muss die ConvertTo Implementierung nullzurückgeben. in diesem Fall ist es zulässig, eine Ausnahme auszulösen.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. Wenn Sie jedoch Ausnahmen auslösen, sollten Sie die Möglichkeit melden, diese Konvertierung nicht als Teil ihrer CanConvertTo Implementierung zu verwenden, sodass die bewährte Vorgehensweise bei der Überprüfung mit CanConvertTo zuerst unterstützt wird, um Ausnahmen zu vermeiden.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 nicht vom Typ Stringist, können Sie Ihre eigene konverterverarbeitung auswählen.If destinationType parameter is not of type String, you can choose your own converter handling. Normalerweise würden Sie die grundlegende Implementierungs Verarbeitung wiederherstellen, die im 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

Damit Ihr benutzerdefinierter Typkonverter als der aktive Typkonverter für eine benutzerdefinierte Klasse von einem XAML-Prozessor verwendet werden kann, müssen Sie den TypeConverterAttribute auf Ihre Klassendefinition anwenden.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 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. Anstatt ein TypeConverterAttribute auf die Klassendefinition anzuwenden, wenden Sie es auf eine Eigenschafts Definition an (die Haupt Definition, nicht die get/set darin enthaltenen Implementierungen).Instead of applying a 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 XAML processor handles values of that property, it can process input strings and return object instances. Die Typkonvertertechnik pro Eigenschaft ist besonders nützlich, wenn Sie einen Eigenschaftentyp aus Microsoft .NET Framework oder einer anderen Bibliothek verwenden möchten, in der Sie die Klassendefinition nicht steuern können und keine TypeConverterAttribute dort anwenden können.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