Compartilhar via


XamlReader Classe

Definição

Fornece um mecanismo de processador XAML para analisar XAML e criar árvores de objeto correspondentes.

public ref class XamlReader sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
Object Platform::Object IInspectable XamlReader
Atributos

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 no formato 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 do 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.

Métodos

Load(String)

Analisa um fragmento XAML bem formado e cria uma árvore de objeto correspondente e retorna a raiz da árvore de objetos.

LoadWithInitialTemplateValidation(String)

Analisa um fragmento XAML bem formado e cria uma árvore de objeto correspondente e retorna a raiz da árvore de objetos. Também executa a validação de tempo de carga de todos os modelos vinculados.

Aplica-se a

Confira também