XamlReader.Load(String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Analisa um fragmento XAML bem formado e cria uma árvore de objeto correspondente e retorna a raiz da árvore 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
Uma cadeia de caracteres que contém um fragmento XAML válido.
Retornos
O objeto raiz da árvore de objetos criada.
Exemplos
Este exemplo cria uma única elipse de uma cadeia de caracteres XAML, chamando Load. Em seguida, ele conecta a elipse criada, mas desconectada, à coleção Children de um elemento que já existia no aplicativo UWP em execução. Por fim, o exemplo acessa a Elipse novamente no local em que foi adicionada usando uma consulta e altera uma de suas propriedades.
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);
Comentários
O XamlReader fornece um comportamento de construção de objeto que faz o paralelo de como o XAML é analisado pelo analisador XAML Windows Runtime e o uso de XAML para definir a interface do usuário de um aplicativo UWP. A análise da entrada XAML com XamlReader.Load gera árvores de objeto em tempo de execução de objetos Windows Runtime. A árvore de objetos fornece uma maneira de programar esses objetos em tempo de execução, percorrendo partes da árvore completa.
Há vários conceitos que são importantes de entender quando você cria objetos de XAML com o método XamlReader.Load:
- A cadeia de caracteres de conteúdo XAML deve definir um único elemento raiz.
- A cadeia de caracteres de conteúdo XAML deve ser XML bem formada, além de ser XAML válido.
- O conteúdo XAML deve definir um xmlns padrão. Normalmente, esse é o vocabulário XAML Windows Runtime, conforme identificado por
http://schemas.microsoft.com/winfx/2006/xaml/presentation
. - Todos os assemblies personalizados referenciados em um mapeamento de namespace XAML já devem estar disponíveis para o aplicativo.
- O XAML não deve tentar especificar o atributo x:Class ou incluir atributos definidos por XAML para manipuladores de eventos.
- Não é possível usar FindName no namescope XAML geral para localizar um objeto de runtime adicionado, mas você pode pesquisar no namescope XAML específico do objeto criado. Para saber mais, veja Namescopes XAML.
- A lógica de criação de objeto não pode integrar o XAML carregado com classes code-behind em tempo de execução. Se quiser adicionar manipuladores de eventos, faça isso no código referenciando objetos obtidos de dentro da estrutura da árvore de objetos do resultado de Carregamento e usando a sintaxe específica da linguagem para anexar manipuladores (como
+=
). - Deve haver conteúdo XAML existente; não é possível substituir toda a árvore de conteúdo. Você deve, no mínimo, preservar o elemento raiz original para que as implicações do modelo de aplicativo de uma página XAML carregada permaneçam ativas.
- O objeto criado com base em Load pode ser atribuído a apenas um local na árvore de objetos primária. Se você quiser adicionar objetos criados de XAML idêntico a diferentes áreas da árvore de objetos primária do aplicativo, você deverá analisar o XAML várias vezes usando a mesma cadeia de caracteres de entrada, usando destinos diferentes para o valor retornado.
- A árvore de objeto primária restante deve dar suporte a uma propriedade apropriada a ser definida.