XamlReader.Load(String) Metodo

Definizione

Analizza un frammento XAML ben formato e crea un albero di oggetti corrispondente e restituisce la radice dell'albero degli oggetti.

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

Parametri

xaml
String

Platform::String

winrt::hstring

Stringa che contiene un frammento XAML valido.

Valori restituiti

Object

Platform::Object

IInspectable

Oggetto radice dell'albero degli oggetti creato.

Esempio

Questo esempio crea un singolo oggetto Ellipse da una stringa XAML, chiamando Load. Connette quindi l'oggetto Ellipse creato ma disconnesso alla raccolta Children di un elemento già esistente nell'app UWP in esecuzione. Infine, l'esempio accede nuovamente all'ellisse nella posizione in cui è stata aggiunta usando una query e ne modifica una delle proprietà.

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);

Commenti

XamlReader fornisce un comportamento di costruzione di oggetti che parallelise al modo in cui XAML viene analizzato dal parser XAML Windows Runtime e dall'uso di XAML per definire l'interfaccia utente di un'app UWP. L'analisi dell'input XAML con XamlReader.Load genera alberi di oggetti in fase di esecuzione di oggetti Windows Runtime. L'albero degli oggetti consente di programmare in base a tali oggetti in fase di esecuzione, passando attraverso parti dell'albero completo.

Esistono diversi concetti importanti da comprendere quando si creano oggetti da XAML con il metodo XamlReader.Load:

  • La stringa di contenuto XAML deve definire un singolo elemento radice.
  • La stringa di contenuto XAML deve essere xml ben formato, oltre a essere un codice XAML valido.
  • Il contenuto XAML deve definire xmlns predefinito. In genere si tratta del vocabolario XAML Windows Runtime, come identificato da http://schemas.microsoft.com/winfx/2006/xaml/presentation.
  • Tutti gli assembly personalizzati a cui viene fatto riferimento in un mapping dello spazio dei nomi XAML devono essere già disponibili per l'applicazione.
  • Il codice XAML non deve tentare di specificare l'attributo x:Class o includere attributi definiti da XAML per i gestori eventi.
  • Non puoi usare FindName nell'ambito dei nomi XAML generale per trovare un oggetto runtime aggiunto, ma puoi eseguire ricerche nell'ambito dei nomi XAML specifico dell'oggetto creato. Per altre info, vedi Ambiti dei nomi XAML.
  • La logica di creazione di oggetti non può integrare il codice XAML caricato con classi code-behind in fase di esecuzione. Se si desidera aggiungere gestori eventi, è necessario farlo nel codice facendo riferimento agli oggetti ottenuti dall'interno della struttura ad albero di oggetti del risultato load e usando la sintassi specifica del linguaggio per associare gestori , ad esempio +=.
  • Deve essere presente contenuto XAML esistente; non è possibile sostituire l'intero albero del contenuto. Devi mantenere almeno l'elemento radice originale in modo che le implicazioni del modello dell'app di una pagina XAML caricata rimangano attive.
  • L'oggetto creato da Load può essere assegnato a una sola posizione nell'albero degli oggetti primario. Se vuoi aggiungere oggetti creati da XAML identico a diverse aree dell'albero degli oggetti primario dell'applicazione, devi analizzare XAML più volte usando la stessa stringa di input, usando destinazioni diverse per il valore restituito.
  • L'albero degli oggetti primario rimanente deve supportare una proprietà appropriata da impostare.

Si applica a

Vedi anche