Silverlight: есть ли событие, которое запускается в FrameworkElement до его визуализации? - PullRequest
1 голос
/ 09 июня 2009

В нашем проекте Silverlight 2 мы создали прикрепленное свойство для оперативного перевода в текстовые свойства различных пользовательских элементов управления. Чтобы достичь этого, мы подключаем событие Loaded к FrameworkElement, когда свойство установлено. Когда событие вызывается, мы берем существующее значение свойства текста и выполняем некоторые простые подстановки строк, прежде чем заменить значение свойства переведенным текстом. Однако это приводит к тому, что элемент управления отображается с непереведенным текстом, а затем текст быстро заменяется переведенной версией.

Есть ли альтернативное событие, которое мы можем перехватить, и которое сработает до того, как будет отрисован элемент управления?

Ответы [ 2 ]

1 голос
/ 24 августа 2009

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

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

0 голосов
/ 09 июня 2009

Я не совсем уверен в этом, но вы можете использовать событие LayoutUpdated. Он сработает при изменении размера элемента управления и т. Д. (Вы можете принять меры, чтобы ваш код выполнялся только один раз.)

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

...