Silverlight: есть ли событие, которое запускается в FrameworkElement до его визуализации?

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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам