XamlReader Classe
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.
Fornece um mecanismo de processador XAML para analisar XAML e criar árvores de objeto correspondentes.
public ref class XamlReader sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class XamlReader final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class XamlReader
Public NotInheritable Class XamlReader
- Herança
- Atributos
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
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
XamlReader é uma classe de utilitário com métodos que criam objetos com base em uma entrada de marcação XAML na forma de cadeia de caracteres. 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 ao criar 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álida.
- O conteúdo XAML deve definir um xmlns padrão. Normalmente, esse é o Windows Runtime vocabulário XAML, 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 você quiser adicionar manipuladores de eventos, deverá fazer isso no código referenciando objetos obtidos de dentro da estrutura da árvore de objetos do resultado load e usando a sintaxe específica do idioma 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, analise o XAML várias vezes usando a mesma cadeia de caracteres de entrada, usando destinos diferentes para o valor retornado.
- A árvore de objetos primária restante deve dar suporte a uma propriedade apropriada a ser definida.
Métodos
Load(String) |
Analisa um fragmento XAML bem formado e cria uma árvore de objetos correspondente e retorna a raiz da árvore de objetos. |
LoadWithInitialTemplateValidation(String) |
Analisa um fragmento XAML bem formado cria uma árvore de objetos correspondente e retorna a raiz da árvore de objetos. Também executa a validação de tempo de carga de todos os modelos vinculados. |