1

在我们的 Silverlight 2 项目中,我们创建了一个附加属性来执行对各种用户控件的文本属性的即时翻译。为此,我们在FrameworkElement设置属性时挂钩了 Loaded 事件。当事件触发时,我们获取现有的文本属性值并对其执行一些简单的字符串替换,然后用翻译后的文本替换属性值。但是,这会导致控件使用未翻译的文本呈现,然后文本很快被翻译版本替换。

是否有一个我们可以挂钩的替代事件会在控件呈现之前触发?

4

2 回答 2

1

我已经更改了我的代码,以便它现在在调用附加属性的设置器时立即执行翻译。无需等待FrameworkElement完成加载,因为我可以在元素呈现之前很久就更改 Text 属性。

我最初使用 Loaded 事件的想法是通过仅翻译屏幕上可见的控件来减少应用程序的启动时间。事实证明,我复制了运行时执行的一些工作,因为运行时在需要之前不会调用属性设置器。

于 2009-08-24T05:55:46.433 回答
0

我对此并不完全确定,但你能使用这个LayoutUpdated活动吗?它会在调整控件大小时触发(您可以采取措施确保您的代码只执行一次。)

我知道这似乎不是“正确”的事件,但不幸的是,Silverlight 有点让你站在那里,当涉及到事件时。

于 2009-06-09T01:46:46.363 回答