Как обнаружить завершение привязки данных в WPF - PullRequest
13 голосов
/ 05 мая 2009

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 05 мая 2009

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

7 голосов
/ 26 июня 2014

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

<TreeViewItem>
    <TextBlock Name="NameText"
      Text="{Binding Path=Name, Mode=OneWay, NotifyOnTargetUpdated=True}"
      TargetUpdated="OnTargetUpdated"/>
</TreeViewItem>
1 голос
/ 06 мая 2009

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

0 голосов
/ 23 июля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...