Как определить привязку данных, завершенную в WPF

Когда я выбираю элемент в своем древовидном представлении, есть заметный промежуток времени от моего класса viewmodel, который создается при обновлении представления, а treeview node - привет-ли.

Мне нужно показать курсор ожидания в течение этого времени - я пробовал обернуть код, который создает экземпляр класса viewmodel, но курсор возвращается к стрелке за пару секунд до того, как завершается привязка данных, а node получает подсветку. Есть ли какое-то событие, которое сообщает мне, когда привязка завершена, или когда приветствуется node?

Это не связано с расширением узлов, просто выбрав узлы верхнего уровня.

Спасибо за любую помощь.

Ответы

Ответ 1

Событие Loaded на нужном элементе управления TreeView произойдет после того, как все привязки будут настроены. Я думаю, что это происходит до того, как все было нарисовано, так что это может быть не совсем то, что вам нужно.

Ответ 2

Вы можете получить уведомление, когда цель или когда источник обновлен.

<TreeViewItem>
    <TextBlock Name="NameText"
      Text="{Binding Path=Name, Mode=OneWay, NotifyOnTargetUpdated=True}"
      TargetUpdated="OnTargetUpdated"/>
</TreeViewItem>

Ответ 3

Есть ли "зависание", когда происходит этот разрыв? Возможно, вам нужно поместить тяжелую логику в отдельный поток или просто использовать свойство IsAsync класса Binding. Вы также можете взглянуть на Приоритетную привязку. Здесь - довольно хорошая статья о том, как ее использовать.

Ответ 4

Вы можете переопределить элемент управления OnContentRendered for Window.