CORRECÇÃO: Uma excepção de NullReferenceException ocorre quando executa um.NET aplicação de WPF com o quadro 4. 0 que tenha os eventos num modelo aninhados

Artigo: 2464222 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Considere o seguinte cenário:
  • Tem um Microsoft.NET aplicação WPF (Windows Presentation Foundation) baseado no quadro 4. 0.
  • Na aplicação, não existe um modelo que está aninhado dentro de outro modelo.
  • O modelo interior (aninhado) contém um controlo que especifica um estilo e um evento. O estilo faz referência a um recurso estático.

    Por exemplo, o ficheiro XAML da aplicação o WPF é semelhante ao seguinte:
    <Grid>
          <ListBox ItemsSource="{StaticResource Data}" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <ListBox ItemsSource="{Binding .}">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding .}" Width="30"
                                             Loaded="TextBlock_Loaded"
                                             Style="{StaticResource TextBlockStyle}" />
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </DataTemplate>
                </ListBox.ItemTemplate>
          </ListBox>
      </Grid>
  • Executar a aplicação de WPF.
Neste cenário, umNullReferenceExceptionexcepção ocorre doIStyleConnector.Connectmétodo e, em seguida, a aplicação de WPF falha.

Causa

Este problema ocorre porque o modelo interior é indicado quando é aplicado o modelo do exterior. Quando a aplicação chamar aIStyleConnector.Connectmétodo, a instância do controlo no modelo de interior não está disponível. Por conseguinte, umNullReferenceExceptionocorre uma excepção.

Resolução

Informações sobre a correcção

Existe uma correcção suportada da Microsoft. No entanto, esta correcção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pela próxima actualização de software que contenha esta correcção.

Para transferir esta correcção a partir da Galeria de código da MSDN, visite o seguinte Web site da Microsoft:
http://Code.msdn.microsoft.com/KB2464222
NotaA Galeria de código do MSDN apresenta os idiomas nos quais a correcção está disponível. Se não conseguir ver o idioma listado, é porque a página de recursos da Galeria de código não está disponível para esse idioma.

NotaCaso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correcção específica. Para obter uma lista completa dos números de telefone de suporte e assistência a clientes Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
NotaTambém pode transferir esta correcção a partir do seguinte Web site da Microsoft:
https://Connect.microsoft.com/VisualStudio/downloads/DownloadDetails.aspx?DownloadID = 32826 & wa = wsignin1.0

Pré-requisitos

Para aplicar esta correcção, tem de ter o Microsoft.NET Framework 4. 0 instalado.

Requisito de reinício

Poderá ter de reiniciar o computador depois de aplicar a correcção.
Recomendamos que feche todas.Aplicações do .NET Framework que bloquear ou usar os ficheiros afectados antes de instalar esta correcção.

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções.

Informações de ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na Hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize aFuso horárioseparador noData e horaitem no painel de controlo.
Para todas as versões baseadas em x86, do Windows XP, do Windows Server 2003, do Windows Vista, do Windows Server 2008 e do Windows 7
Reduzir esta tabelaExpandir esta tabela
Nome do ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Presentationframework.dll4.0.30319.3966,347,11225-Nov-201004: 29x86
Para todas as versões de baseadas em x64 do Windows XP, do Windows Server 2003, do Windows Vista, do Windows Server 2008, do Windows 7 e do Windows Server 2008 R2
Reduzir esta tabelaExpandir esta tabela
Nome do ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Presentationframework.dll4.0.30319.3966,347,11225-Nov-201004: 29x86

Ponto Da Situação

Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Como contornar

Para contornar este problema, utilize um dos seguintes métodos:
  • Defina a referência de estilo para um recurso dinâmico.
  • Definir o modelo interno como um recurso para o modelo de exterior e, em seguida, remova a relação do ninho.

Propriedades

Artigo: 2464222 - Última revisão: quarta-feira, 26 de Janeiro de 2011 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 4.0
Palavras-chave: 
kbqfe kbfix kbhotfixserver kbexpertiseadvanced kbsurveynew atdownload kbmt KB2464222 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2464222

Submeter comentários