XamlReader.Load(String) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 contenente un frammento XAML valido.
Restituisce
Oggetto radice dell'albero degli oggetti creato.
Esempio
In questo esempio viene creata una singola Ellipse da una stringa XAML, chiamando Load. Connette quindi l'oggetto creato ma disconnesso all'insieme Children di un elemento già esistente nell'app UWP in esecuzione. Infine, l'esempio accede di nuovo all'Ellipse nella posizione in cui è stata aggiunta usando una query e modifica una delle relative 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 dell'oggetto che parallela 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 dell'oggetto run-time di oggetti Windows Runtime. L'albero degli oggetti offre un modo per programmare 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 valido XAML.
- Il contenuto XAML deve definire un 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 si fa 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 gli attributi definiti da XAML per i gestori eventi.
- Non è possibile usare FindName nel nome XAML generale per trovare un oggetto runtime aggiunto, ma è possibile cercare all'interno del nome 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 i gestori di collegamento ( ad esempio
+=
). - Deve essere presente contenuto XAML esistente; non è possibile sostituire l'intero albero del contenuto. È necessario 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 dell'oggetto primario. Se si desidera aggiungere oggetti creati da XAML identico a diverse aree dell'albero degli oggetti primari dell'applicazione, è necessario analizzare più volte il codice XAML usando la stessa stringa di input, usando destinazioni diverse per il valore restituito.
- L'albero dell'oggetto primario rimanente deve supportare una proprietà appropriata da impostare.