Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No .NET Framework 3.5 e no .NET Framework 3.0, tanto o Windows Presentation Foundation (WPF) quanto o Windows Workflow Foundation incluíram uma implementação de linguagem XAML. Muitos dos tipos públicos que forneceram extensibilidade para a implementação de XAML do WPF existiam nos assemblies WindowsBase, PresentationCore e PresentationFramework. Da mesma forma, os tipos públicos que forneceram extensibilidade para o XAML do Windows Workflow Foundation existiam no assembly System.Workflow.ComponentModel. No .NET Framework 4, alguns dos tipos relacionados a XAML foram migrados para o assembly System.Xaml. Uma implementação comum do .NET Framework de serviços de linguagem XAML permite muitos cenários de extensibilidade XAML que foram originalmente definidos pela implementação XAML de uma estrutura específica, mas agora fazem parte do suporte geral à linguagem XAML do .NET Framework 4. Este artigo lista os tipos que foram migrados e discute problemas relacionados à migração.
Assemblies e namespaces
No .NET Framework 3.5 e no .NET Framework 3.0, os tipos que o WPF implementou para dar suporte a XAML geralmente estavam no System.Windows.Markup namespace. A maioria desses tipos estava no assembly do WindowsBase.
No .NET Framework 4, há um novo System.Xaml namespace e um novo assembly System.Xaml. Muitos dos tipos que foram originalmente implementados para WPF XAML agora são fornecidos como pontos de extensibilidade ou serviços para qualquer implementação de XAML. Como parte de disponibilizá-los para cenários mais gerais, os tipos são encaminhados do assembly original do WPF para o assembly System.Xaml. Isso permite cenários de extensibilidade XAML sem precisar incluir os assemblies de outras estruturas (como WPF e Windows Workflow Foundation).
Para tipos migrados, a maioria dos tipos permanece no System.Windows.Markup namespace. Isso foi parcialmente para evitar a quebra de mapeamentos de namespace CLR em implementações existentes por arquivo. Como resultado, o System.Windows.Markup namespace no .NET Framework 4 contém uma mistura de tipos gerais de suporte à linguagem XAML (do assembly System.Xaml) e tipos específicos para a implementação de XAML do WPF (do WindowsBase e de outros assemblies WPF). Qualquer tipo que tenha sido migrado para System.Xaml, mas que existia anteriormente em um assembly do WPF, tem suporte para redirecionamento de tipo na versão 4 do assembly do WPF.
Tipos de suporte XAML de fluxo de trabalho
O Windows Workflow Foundation também forneceu tipos de suporte XAML e, em muitos casos, eles tinham nomes curtos idênticos a um equivalente do WPF. Veja a seguir uma lista de tipos de suporte XAML do Windows Workflow Foundation:
Esses tipos de suporte ainda existem nos assemblies do Windows Workflow Foundation para .NET Framework 4 e ainda podem ser usados para aplicativos específicos do Windows Workflow Foundation; no entanto, eles não devem ser referenciados por aplicativos ou estruturas que não usam o Windows Workflow Foundation.
MarkupExtension
No .NET Framework 3.5 e no .NET Framework 3.0, a MarkupExtension classe para WPF estava no assembly do WindowsBase. Uma classe paralela para o Windows Workflow Foundation, MarkupExtension existia na assemblagem System.Workflow.ComponentModel. No .NET Framework 4, a MarkupExtension classe é migrada para o assembly System.Xaml. No .NET Framework 4, MarkupExtension destina-se a qualquer cenário de extensibilidade XAML que use os Serviços XAML do .NET, não apenas para aqueles que se baseiam em estruturas específicas. Quando possível, frameworks específicos ou código de usuário no framework também devem se basear na classe MarkupExtension para extensão XAML.
Classes de serviço de suporte para MarkupExtension
O .NET Framework 3.5 e o .NET Framework 3.0 para WPF forneceram vários serviços disponíveis para MarkupExtension implementadores e TypeConverter implementações para suportar o uso de tipos/propriedades no XAML. Esses serviços são os seguintes:
Observação
Outro serviço do .NET Framework 3.5 relacionado a extensões de marcação é a IReceiveMarkupExtension interface.
IReceiveMarkupExtension não foi migrado e está marcado [Obsolete] para o .NET Framework 4. Cenários que anteriormente usavam IReceiveMarkupExtension devem, em vez disso, usar retornos de chamada atribuídos ao XamlSetMarkupExtensionAttribute.
AcceptedMarkupExtensionExpressionTypeAttribute também está marcado [Obsolete].
Recursos de linguagem XAML
Vários recursos e componentes de linguagem XAML para WPF existiam anteriormente no assembly PresentationFramework. Elas foram implementadas como uma MarkupExtension subclasse para revelar usos de extensões de marcação na marcação XAML. No .NET Framework 4, eles existem no assembly System.Xaml para que projetos que não incluam assemblies WPF possam usar esses recursos no nível da linguagem XAML. O WPF usa essas mesmas implementações para aplicativos do .NET Framework 4. Assim como acontece com os outros casos listados neste tópico, os tipos de suporte continuam a existir no System.Windows.Markup namespace para evitar a quebra de referências anteriores.
A tabela a seguir contém uma lista das classes de suporte a recursos XAML definidas no System.Xaml.
| Recursos da linguagem XAML | Uso |
|---|---|
| ArrayExtension | <x:Array ...> |
| NullExtension | {x:Null} |
| StaticExtension | {x:Static ...} |
| TypeExtension | {x:Type ...} |
Embora o System.Xaml possa não ter classes de suporte específicas, a lógica geral para processar recursos de linguagem para a linguagem XAML agora reside em System.Xaml e seus leitores XAML implementados e gravadores XAML. Por exemplo, x:TypeArguments é um atributo processado por leitores XAML e gravadores XAML de implementações System.Xaml; ele pode ser observado no fluxo de nós XAML, tem tratamento no contexto de esquema XAML padrão (baseado em CLR), tem uma representação do sistema de tipo XAML e assim por diante. Para obter mais informações sobre a documentação de referência para XAML, consulte os Serviços XAML.
ValueSerializer e Classes de Suporte
A classe ValueSerializer dá suporte à conversão de tipo para uma string, especialmente para casos de serialização XAML onde a serialização pode exigir vários modos ou nós no resultado. No .NET Framework 3.5 e no .NET Framework 3.0, o ValueSerializer para WPF estava no assembly do WindowsBase. No .NET Framework 4, a ValueSerializer classe está em System.Xaml e destina-se a qualquer cenário de extensibilidade XAML, não apenas para aqueles que se baseiam no WPF. IValueSerializerContext (um serviço de suporte) e DateTimeValueSerializer (uma subclasse específica) também são migrados para System.Xaml.
Atributos de XAML-Related
O WPF XAML incluiu vários atributos que podem ser aplicados a tipos CLR para indicar algo sobre seu comportamento XAML. Veja a seguir uma lista dos atributos que existiam em assemblies do WPF no .NET Framework 3.5 e no .NET Framework 3.0. Esses atributos são migrados para System.Xaml no .NET Framework 4.
Classes diversas
A IComponentConnector interface existia no WindowsBase no .NET Framework 3.5 e no .NET Framework 3.0, mas existe no System.Xaml no .NET Framework 4. IComponentConnector destina-se principalmente ao suporte a ferramentas e compiladores de marcação XAML.
A INameScope interface existia no WindowsBase no .NET Framework 3.5 e no .NET Framework 3.0, mas existe no System.Xaml no .NET Framework 4. INameScope define operações básicas para um namescope XAML.
Classes relacionadas a XAML com nomes compartilhados que existem no WPF e no System.Xaml
As seguintes classes existem tanto nos assemblies do WPF quanto no assembly System.Xaml no .NET Framework 4.
XamlReader
XamlWriter
XamlParseException
A implementação do WPF é encontrada no System.Windows.Markup namespace e no assembly PresentationFramework. A implementação de System.Xaml é encontrada no System.Xaml namespace. Se você estiver usando tipos WPF ou estiver derivando de tipos WPF, normalmente deve usar as implementações do WPF de XamlReader e XamlWriter, em vez das implementações do System.Xaml. Para obter mais informações, consulte Comentários em System.Windows.Markup.XamlReader e System.Windows.Markup.XamlWriter.
Se você estiver incluindo referências a assemblies WPF e System.Xaml e também estiver usando include instruções para os namespaces System.Windows.Markup e System.Xaml, talvez seja necessário especificar completamente as chamadas para essas APIs para resolver os tipos sem ambiguidade.
.NET Desktop feedback