Ponto apropriado para anexar o evento NodeChanged, XAML

Eu tenho um controle de usuário WPF em um formulário de aplicativo winform

Basicamente, quero um manipulador de eventos genérico anexado ao meu WPF TreeView para manipular "Document.NodeChanged". Como esse evento específico é acionado quando a árvore é preenchida, tentei fazer um anexo tardio por meio do evento Loaded do meu controle treevie

O código é algo como:

private void UpdateGrid()
{
    myGridView.UpdateXML(entityId, runDate, rtbToggleFullView.ToggleState == Telerik.WinControls.Enumerations.ToggleState.Off, userName);
    //Safely attach the event to fire when the treeview has finished loading.
    myGridView.tvRatings.Loaded -= AttachNodeChangedEvent;
    myGridView.tvRatings.Loaded += AttachNodeChangedEvent;
}

Então o método "AttachNodeChangedEvent" se parece com o seguinte:

public void AttachNodeChangedEvent(object i, EventArgs a)
{
    ((XmlDataProvider)myGridView.dataProvider).Document.NodeChanged -= OnNodeChanged;
    ((XmlDataProvider)myGridView.dataProvider).Document.NodeChanged += OnNodeChanged;
}

Com um método OnNodeChanged simples:

public void OnNodeChanged(object i, EventArgs a)
{
  Dirty = true;
}

A ideia é: -

UpdateGrid executa o UpdatesXML na treeview Anexa um "anexador NodeChangeHandler" a treeview.Loaded (quando o treeview é carregado) o treeview dispara "NodeChangeHandler attacher", que anexa "OnNodeChanged" ao XmlDocumentProvider preenchido pelo Treeview.

Isso parecia funcionar perfeitamente no Windows 7. No Windows XP, no entanto, a rotina AttachNodeChangedEvent é acionada e ocorre uma NullReferenceException (presumivelmente porque o Documento ainda não foi carregado?) Travando o aplicativo.

Comentar as linhas ... ((XmlDataProvider) myGridView ... corrige a falha, mas obviamente desativa a funcionalidade.

Alguém pode sugerir uma maneira melhor de obter o mesmo ou esclarecer por que isso funciona no Windows 7, mas não no Windows XP? "por exemplo, anexar NodeChangedEvent após a população inicial do Treeview"

Posso confirmar que ambos usam o pacote .Net Framework 4 apropriado e parecem ter todas as outras dependências incluídas adequadament

Obrigado

questionAnswers(0)

yourAnswerToTheQuestion