在我们的Silverlight 2项目中,我们创建了一个附加属性,以便对各种用户控件的文本属性进行即时翻译。为实现此目的,我们在设置属性时挂钩FrameworkElement
的Loaded事件。当事件触发时,我们获取现有的文本属性值并对其执行一些简单的字符串替换,然后使用已翻译的文本替换属性值。但是,这会导致控件使用未翻译的文本呈现,然后文本会很快被替换为翻译版本。
在呈现控件之前是否有可以挂钩的备用事件?
答案 0 :(得分:1)
我已经更改了我的代码,以便在调用附加属性的setter后立即执行转换。没有必要等待FrameworkElement
完成加载,因为我可以在渲染元素之前更改Text属性。
我对使用Loaded事件的初步想法是通过仅翻译屏幕上可见的控件来减少应用程序的启动时间。事实证明,我正在复制运行时执行的一些工作,因为运行时无论如何都不会调用属性setter。
答案 1 :(得分:0)
我对此并不完全确定,但您可以使用LayoutUpdated
事件。它会在控件调整大小时触发(您可以采取措施确保您的代码只执行一次。)
我知道这似乎不是“正确”的事件,但不幸的是,Silverlight有点让你站在那里举行活动。