XamlReader.Load(String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Analiza un fragmento XAML bien formado y crea un árbol de objetos correspondiente y devuelve la raíz del árbol de objetos.
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
Parámetros
- xaml
-
String
Platform::String
winrt::hstring
Cadena que contiene un fragmento XAML válido.
Devoluciones
Objeto raíz del árbol de objetos creado.
Ejemplos
En este ejemplo se crea una única elipse a partir de una cadena XAML, que llama a Load. A continuación, conecta la elipse creada pero desconectada a la colección Children de un elemento que ya existía en la aplicación para UWP en ejecución. Por último, el ejemplo vuelve a acceder a la elipse en la ubicación donde se agregó mediante una consulta y cambia una de sus propiedades.
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);
Comentarios
XamlReader proporciona un comportamiento de construcción de objetos que en paralelo cómo analiza XAML el analizador XAML Windows Runtime y el uso de XAML para definir la interfaz de usuario de una aplicación para UWP. El análisis de la entrada XAML con XamlReader.Load genera árboles de objetos en tiempo de ejecución de Windows Runtime objetos. El árbol de objetos proporciona una manera de programar con esos objetos en tiempo de ejecución, caminando por partes del árbol completo.
Hay varios conceptos que son importantes para entender, al crear objetos a partir de XAML con el método XamlReader.Load:
- La cadena de contenido XAML debe definir un único elemento raíz.
- La cadena de contenido XAML debe tener un formato XML correcto, así como ser XAML válido.
- El contenido XAML debe definir un xmln predeterminado. Normalmente, este es el Windows Runtime vocabulario XAML, como se identifica en
http://schemas.microsoft.com/winfx/2006/xaml/presentation
. - Los ensamblados personalizados a los que se hace referencia en una asignación de espacio de nombres XAML ya deben estar disponibles para la aplicación.
- El XAML no debe intentar especificar el atributo x:Class ni incluir ningún atributo definido por XAML para los controladores de eventos.
- No puedes usar FindName en el ámbito de nombres XAML general para buscar un objeto en tiempo de ejecución agregado, pero puedes buscar en el ámbito de nombres XAML específico del objeto creado. Para obtener más información, consulta Ámbitos de nombres XAML.
- La lógica de creación de objetos no puede integrar el XAML cargado con clases de código subyacente en tiempo de ejecución. Si desea agregar controladores de eventos, debe hacerlo en el código haciendo referencia a objetos obtenidos desde dentro de la estructura de árbol de objetos del resultado load y usando la sintaxis específica del lenguaje para adjuntar controladores (como
+=
). - Debe haber contenido XAML existente; no puede reemplazar todo el árbol de contenido. Debes conservar al menos el elemento raíz original para que las implicaciones del modelo de aplicación de una página XAML cargada permanezcan activas.
- El objeto creado a partir de Load solo se puede asignar a una ubicación en el árbol de objetos principal. Si quieres agregar objetos creados a partir de XAML idénticos a diferentes áreas del árbol de objetos principal de la aplicación, debes analizar el XAML varias veces con la misma cadena de entrada, usando destinos diferentes para el valor devuelto.
- El árbol de objetos principal restante debe admitir una propiedad adecuada para establecer.