2009-06-09 3 views
1

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

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

ответ

1

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

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

0

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

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

+0

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

Смежные вопросы