XamlReader.Load(String) Méthode
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.
Analyse un fragment XAML bien formé et crée une arborescence d’objets correspondante, puis retourne la racine de l’arborescence d’objets.
public:
static Platform::Object ^ Load(Platform::String ^ xaml);
static IInspectable Load(winrt::hstring const& xaml);
public static object Load(string xaml);
function load(xaml)
Public Shared Function Load (xaml As String) As Object
Paramètres
- xaml
-
String
Platform::String
winrt::hstring
Chaîne qui contient un fragment XAML valide.
Retours
Objet racine de l’arborescence d’objets créée.
Exemples
Cet exemple crée une seule Ellipse à partir d’une chaîne XAML, en appelant Load. Ensuite, il connecte l’Ellipse créée mais déconnectée à la collection Children d’un élément qui existait déjà dans l’application UWP en cours d’exécution. Enfin, l’exemple accède à nouveau à l’Ellipse à l’emplacement où elle a été ajoutée à l’aide d’une requête et modifie l’une de ses propriétés.
string xaml =
"<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\"
Fill=\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
object ellipse = XamlReader.Load(xaml);
//stackPanelRoot is the visual root of a Page in existing XAML markup already loaded by the appmodel
stackPanelRoot.Children.Add(ellipse as UIElement);
//walk the tree using XLinq result and cast back to a XAML type to set a property on it at runtime
var result = (from item in stackPanelRoot.Children
where (item is FrameworkElement)
&& ((FrameworkElement) item).Name == "EllipseAdded"
select item as FrameworkElement).FirstOrDefault();
((Ellipse) result).Fill = new SolidColorBrush(Colors.Yellow);
Remarques
XamlReader fournit un comportement de construction d’objet qui met en parallèle la façon dont XAML est analysé par l’analyseur XAML Windows Runtime et l’utilisation de XAML pour définir l’interface utilisateur d’une application UWP. L’analyse de l’entrée XAML avec XamlReader.Load génère des arborescences d’objets d’exécution d’objets Windows Runtime. L’arborescence d’objets permet de programmer sur ces objets au moment de l’exécution, en parcourant certaines parties de l’arborescence complète.
Il existe plusieurs concepts qui sont importants à comprendre lorsque vous créez des objets à partir de XAML avec la méthode XamlReader.Load :
- La chaîne de contenu XAML doit définir un élément racine unique.
- La chaîne de contenu XAML doit être un code XML bien formé, ainsi qu’un code XAML valide.
- Le contenu XAML doit définir un xmlns par défaut. Il s’agit généralement du vocabulaire XAML Windows Runtime, comme identifié par
http://schemas.microsoft.com/winfx/2006/xaml/presentation
. - Tous les assemblys personnalisés référencés dans un mappage d’espace de noms XAML doivent déjà être disponibles pour l’application.
- Le code XAML ne doit pas tenter de spécifier l’attribut x:Class ou d’inclure des attributs définis par XAML pour les gestionnaires d’événements.
- Vous ne pouvez pas utiliser FindName dans la portée de nom XAML générale pour rechercher un objet runtime ajouté, mais vous pouvez effectuer une recherche dans l’étendue de nom XAML spécifique de l’objet créé. Pour plus d’informations, voir Namescopes XAML.
- La logique de création d’objet ne peut pas intégrer le CODE XAML chargé à des classes code-behind au moment de l’exécution. Si vous souhaitez ajouter des gestionnaires d’événements, vous devez le faire dans le code en référençant des objets obtenus à partir de l’arborescence d’objets du résultat load et en utilisant la syntaxe propre au langage pour attacher des gestionnaires (comme
+=
). - Il doit y avoir du contenu XAML existant ; vous ne pouvez pas remplacer la totalité de l’arborescence de contenu. Vous devez au minimum conserver l’élément racine d’origine afin que les implications du modèle d’application d’une page XAML chargée restent actives.
- L’objet créé à partir de Load ne peut être affecté qu’à un seul emplacement dans l’arborescence d’objets primaire. Si vous souhaitez ajouter des objets créés à partir d’un même code XAML à différentes zones de l’arborescence d’objets principale de l’application, vous devez analyser le code XAML plusieurs fois à l’aide de la même chaîne d’entrée, en utilisant des destinations différentes pour la valeur de retour.
- L’arborescence d’objets primaire restante doit prendre en charge une propriété appropriée à définir.