Добавление дочерних элементов Canvas в цикл for не отображается до завершения цикла - PullRequest
0 голосов
/ 12 января 2012

То, что говорит лакейка, у меня есть длинный цикл for, в котором на основе некоторых условий я добавляю объекты в Canvas.Я хочу, чтобы объекты показывались по мере их добавления, но они показывались после завершения цикла?Кто-нибудь знает, почему и как я могу это исправить?

Также : свойство textbox.text тоже не обновляется.

1 Ответ

0 голосов
/ 12 января 2012

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

Вы должны попытаться переместить длительные операции в фоновый поток, если это возможно- скажем, используя BackgroundWorker - и обновляйте пользовательский интерфейс так часто.Это должно привести к гораздо более отзывчивому пользовательскому интерфейсу.

Если вам действительно нужно проделать большую работу в потоке пользовательского интерфейса (например, вы добавляете большое количество элементов управления, которые медленнорендер) вам придется разбить его на управляемые части.Вы можете подождать, пока событие CompositionTarget.Rendering узнает, когда пользовательский интерфейс отобразился, и вы можете продолжить.Но гораздо лучше перенести работу в фоновый поток, если вы можете.

...