Спасибо!

я есть пользовательский контроль WPF в форме заявки winforms.

По сути, я хочу, чтобы общий обработчик событий, прикрепленный к моему WPF TreeView, обрабатывал «Document.NodeChanged». Поскольку это конкретное событие срабатывает при заполнении дерева, я попытался выполнить позднее присоединение через событие Loaded моего элемента управления treeview.

Код выглядит примерно так:

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;
}

Тогда метод AttachNodeChangedEvent выглядит следующим образом:

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

С помощью простого метода OnNodeChanged:

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

Идея в том, что:

UpdateGrid запускает UpdatesXML при просмотре дереваПрисоединяет «атташе NodeChangeHandler» к дереву.(когда загружается древовидное представление) древовидное представление запускает "Attade NodeChangeHandler", который затем присоединяет "OnNodeChanged" к заполненному XmlDocumentProvider Treeview.

Похоже, что это прекрасно работает в Windows 7. В Windows XP, однако, запускается процедура AttachNodeChangedEvent, и возникает сбой NullReferenceException (предположительно, потому что документ еще не загружен?), Вызывающий сбой приложения.

Комментирование строк ... ((XmlDataProvider) myGridView ... исправляет сбой, но, очевидно, отключает функциональность.

Кто-нибудь может предложить лучший способ достижения того же или пролить свет на то, почему это работает для Windows 7, но не для Windows XP? «Например, присоединить NodeChangedEvent после первоначального заполнения Treeview»

Я могу подтвердить, что оба используют соответствующий пакет .Net Framework 4 и, похоже, все остальные зависимости включены соответствующим образом.

Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос