XamlReader Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé.
public ref class XamlReader
public class XamlReader
type XamlReader = class
Public Class XamlReader
- Héritage
-
XamlReader
Exemples
L’exemple suivant convertit une Button chaîne en une chaîne à l’aide de la XamlWriter classe. La chaîne est ensuite chargée dans une Button méthode statique Load sur la XamlReader classe.
// Create the Button.
Button originalButton = new Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content = "Click Me";
// Save the Button to a string.
string savedButton = XamlWriter.Save(originalButton);
// Load the button
StringReader stringReader = new StringReader(savedButton);
XmlReader xmlReader = XmlReader.Create(stringReader);
Button readerLoadButton = (Button)XamlReader.Load(xmlReader);
' Create the Button.
Dim originalButton As New Button()
originalButton.Height = 50
originalButton.Width = 100
originalButton.Background = Brushes.AliceBlue
originalButton.Content = "Click Me"
' Save the Button to a string.
Dim savedButton As String = XamlWriter.Save(originalButton)
' Load the button
Dim stringReader As New StringReader(savedButton)
Dim xmlReader As XmlReader = XmlReader.Create(stringReader)
Dim readerLoadButton As Button = CType(XamlReader.Load(xmlReader), Button)
Remarques
Les méthodes synchrones Load sont statiques, mais les méthodes asynchrones LoadAsync ne sont pas statiques et nécessitent une instance de la XamlReader classe à utiliser.
La sortie des Load méthodes est un objet unique, qui représente l’objet racine d’une arborescence d’objets ou d’un graphique d’objets créé. Les graphiques d’objets créés par XamlReader sont généralement ajoutés à l’arborescence d’objets existante d’une application WPF au moment de l’exécution. Sinon, le nouveau graphique objet est considéré comme déconnecté à des fins de modèle d’application WPF. Cela signifie qu’il ne s’affiche pas et qu’il n’est pas accessible à l’aide de l’une des techniques de l’arborescence d’objets telle qu’elle est appliquée à l’arborescence d’objets principale de l’application WPF (par exemple, les API FindName, LogicalTreeHelper, VisualTreeHelper). Pour plus d’informations sur les concepts de l’arborescence d’objets, consultez Arborescences dans WPF.
XamlReader prend en charge les scénarios principaux suivants :
Clonage/fabrique d’objets : sans mécanismes supplémentaires, un type de référence ne peut généralement pas être inclus dans plusieurs positions dans une arborescence d’objets WPF. (Exemples de mécanismes supplémentaires qui offrent la prise en charge du partage ou de la réutilisation dans WPF incluent des objets basés sur Freezable, ou la prise en charge d’objets couramment partageables tels que Brush ceux référencés en tant qu’élément à partir d’un ResourceDictionary.) Une façon de cloner un objet déjà dans l’arborescence d’objets consiste à sérialiser l’objet à l’aide XamlWriter.Savede . Vous utilisez ensuite la chaîne sérialisée comme entrée pour un appel à Load, avec un flux ou XmlReader comme intermédiaire.
Construction d’objets basés sur des informations juste-à-temps : il existe souvent d’autres façons d’avoir une liaison tardive ou une entrée fournie par l’utilisateur modifie l’état des objets existants. Par exemple, vous pouvez utiliser la même valeur pour définir plusieurs propriétés ou utiliser la liaison de données. Toutefois, si vous avez un scénario où même le type d’objet à créer est déterminable uniquement au moment de l’exécution ou avec l’interaction utilisateur, la création d’un tel objet en créant une chaîne pour Load l’entrée est souvent une technique utile.
Utilisation de techniques de ressources existantes : le Stream type est fréquemment utilisé dans d’autres frameworks ou technologies pour transférer des données ou des objets entre des limites d’application ou pour des situations similaires. Vous pouvez ensuite utiliser les Stream techniques pour stocker ou obtenir des données au format XAML que vous utilisez éventuellement pour créer un objet dans le cadre de votre application.
Documents fixes : Votre application peut charger des documents XPS locaux ou téléchargés pour l’inclusion dans une arborescence d’objets d’application WPF et une interface utilisateur.
Note
Cette documentation décrit parfois un graphique d’objet, par opposition à une arborescence d’objets. Une relation parent-enfant stricte n’existe pas toujours dans les relations d’objet d’exécution d’une application WPF au moment de l’exécution. Par conséquent, un graphique d’objets est une terminologie plus largement applicable. Toutefois, étant donné que WPF inclut également deux API de conceptualisation d’arborescence différentes (LogicalTreeHelper, VisualTreeHelper) la métaphore de l’arbre s’applique toujours adéquatement à la plupart des cas réels dans WPF. Toutefois, du point de vue du langage XAML, le graphique d’objets est souvent le meilleur moyen de réfléchir à la façon dont les objets sont créés en XAML, car le langage XAML lui-même ne spécifie pas nécessairement les méthodologies de classe d’assistance qui apportent plus de relations dans une structure d’arborescence.
Sécurité de l’accès au code, XAML libre et XamlReader
Le XAML est un langage de balisage qui représente directement l’instanciation d’objets et leur exécution. Par conséquent, les éléments créés en XAML ont la même possibilité d’interagir avec les ressources système (accès réseau, E/S du système de fichiers, par exemple) que le code généré équivalent.
WPF prend en charge la sécurité d’accès au code du framework de sécurité .NET (CAS). Cela signifie que le contenu WPF exécuté dans la zone Internet a des autorisations d’exécution réduites. « XAML libre » (les pages de CODE XAML noncompilé interprétés au moment du chargement par une visionneuse XAML) et l’application de navigateur XAML (XBAP) sont généralement exécutées dans cette zone Internet et utilisent le même jeu d’autorisations. Toutefois, le code XAML chargé dans une application entièrement approuvée a le même accès aux ressources système que l’application d’hébergement. Pour plus d’informations, consultez Sécurité de confiance partielle WPF.
Les implications de ces instructions sont XamlReader que la conception de votre application doit prendre des décisions d’approbation sur le code XAML que vous décidez de charger. Si vous chargez du code XAML qui n’est pas approuvé, envisagez d’implémenter votre propre technique de bac à sable pour la façon dont vous chargez le graphe d’objets résultant.
XamlReader peut également être appelé par du code d’approbation partielle. Dans ce cas, la zone de sécurité Internet est appliquée pour la sécurité de l’accès au code. Si quelque chose dans le code XAML chargé n’est pas valide dans la zone de sécurité Internet, une exception d’analyse XAML est levée. Sous XBAP et d’autres cas d’approbation partielle au niveau de la plateforme, où XamlReader fait partie de l’exécution, vous obtenez le même comportement d’exception qu’avec les appels d’approbation partielle explicites.
XAML WPF, lecteurs/enregistreurs XAML et contrôle de version du langage XAML
XAML2009 inclut des fonctionnalités de langage telles que x :Reference et x :FactoryMethod. Vous pouvez utiliser des signatures ou LoadParse charger du code XAML qui utilise ces fonctionnalités. Toutefois, ces fonctionnalités de langage ne sont pas prises en charge pour le code XAML qui doit être compilé (par exemple, XAML pour l’action de génération de page dans une application WPF, ou tout XAML qui implique la tâche de compilation de balisage dans les actions de génération).
Types WPF et technologie WPF dans les concepts de support généraux qui s’appuient sur l’accès aux internes WPF. Par exemple, la façon dont WPF implémente les propriétés de dépendance s’appuie sur des techniques internes pour une recherche efficace de membre de type. L’accès à ces éléments internes est activé par les API de lecture et d’écriture XAML fournies dans et XamlReader à XamlWriter partir de l’assembly PresentationFramework et de l’espace System.Windows.Markup de noms. Toutefois, les lecteurs XAML de niveau inférieur et les enregistreurs XAML de l’assembly System.Xaml (classes basées sur System.Xaml.XamlReader, System.Xaml.XamlWriter) n’ont pas accès aux éléments internes WPF. Il n’existe aucune dépendance entre System.Xaml et n’importe quel assembly spécifique à WPF. Sans accès aux éléments internes WPF, les lecteurs et les enregistreurs System.Xaml ne peuvent pas charger ou enregistrer correctement tous les types WPF ou les types basés sur les types WPF. En particulier, les lecteurs et les enregistreurs System.Xaml ne comprennent pas les concepts tels que le magasin de propriétés de sauvegarde des propriétés de dépendance WPF ou toutes les spécificités de la façon dont WPF utilise des styles, des dictionnaires de ressources et des modèles. Par conséquent, vous avez le choix de faire :
Si vous chargez des types WPF et/ou que vous utilisez du code XAML dans un formulaire BAML de quelque façon que ce soit, utilisez les lecteurs XAML PresentationFramework et les enregistreurs XAML.
Si vous ne vous appuyez pas sur des types WPF ou sur la forme BAML de XAML et que vous n’utilisez pas d’implémentation de lecteur XAML ou d’enregistreur XAML d’une autre technologie spécifique pour des raisons spécifiques à cette infrastructure, utilisez les lecteurs XAML System.Xaml et les enregistreurs XAML.
Implémentation du stockage System.Xaml dans .NET 4
XamlReader est l’aire d’API pouvant être appelée pour l’analyseur XAML au niveau du framework WPF. Le même analyseur XAML sous-jacent effectue également le chargement et l’analyse XAML au moment de l’exécution pour les applications WPF qui ciblent .NET Framework 3.0 et .NET Framework 3.5.
Si vous ciblez .NET Framework 4, l’API externe est la même, mais certaines parties de l’implémentation sont basées sur l’implémentation XAML générale de .NET Framework 4 dans l’assembly System.Xaml, ce qui améliore la plupart des aspects techniques et de création de rapports de l’analyse XAML. Le ciblage de .NET Framework 4 implique nécessairement d’inclure System.Xaml comme référence et des détails d’implémentation tels que les exceptions signalées peuvent provenir de types définis par System.Xaml.
Constructeurs
| Nom | Description |
|---|---|
| XamlReader() |
Initialise une nouvelle instance de la classe XamlReader. |
Méthodes
| Nom | Description |
|---|---|
| CancelAsync() |
Abandonne l’opération de charge asynchrone actuelle, s’il existe une opération de chargement asynchrone en attente. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| GetWpfSchemaContext() |
Renvoie un XamlSchemaContext objet qui représente les paramètres de contexte de schéma WPF pour un XamlReader. |
| Load(Stream, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| Load(Stream, ParserContext, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| Load(Stream, ParserContext) |
Lit l’entrée XAML dans le fichier spécifié Stream et retourne un objet qui est la racine de l’arborescence d’objets correspondante. |
| Load(Stream) |
Lit l’entrée XAML dans le code spécifié Stream et retourne une Object racine de l’arborescence d’objets correspondante. |
| Load(XamlReader) |
Lit l’entrée XAML par le biais d’un objet fourni XamlReader et retourne un objet qui est la racine de l’arborescence d’objets correspondante. |
| Load(XmlReader, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| Load(XmlReader) |
Lit l’entrée XAML dans le fichier spécifié XmlReader et retourne un objet qui est la racine de l’arborescence d’objets correspondante. |
| LoadAsync(Stream, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| LoadAsync(Stream, ParserContext, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| LoadAsync(Stream, ParserContext) |
Lit l’entrée XAML dans l’objet spécifié Stream et retourne la racine de l’arborescence d’objets correspondante. |
| LoadAsync(Stream) |
Lit l’entrée XAML dans l’objet spécifié Stream et retourne la racine de l’arborescence d’objets correspondante. |
| LoadAsync(XmlReader, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| LoadAsync(XmlReader) |
Lit l’entrée XAML dans l’objet spécifié XmlReader et retourne la racine de l’arborescence d’objets correspondante. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| Parse(String, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| Parse(String, ParserContext, Boolean) |
Lit l’entrée XAML et crée un graphique d’objet à l’aide du lecteur XAML par défaut WPF et d’un enregistreur d’objets XAML associé. |
| Parse(String, ParserContext) |
Lit le balisage XAML dans la chaîne de texte spécifiée (à l’aide d’un élément spécifié ParserContext) et retourne un objet qui correspond à la racine du balisage spécifié. |
| Parse(String) |
Lit l’entrée XAML dans la chaîne de texte spécifiée et retourne un objet qui correspond à la racine du balisage spécifié. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Événements
| Nom | Description |
|---|---|
| LoadCompleted |
Se produit lorsqu’une opération de chargement asynchrone se termine. |