2009-06-09 109 views
1

在我們的Silverlight 2項目中,我們創建了一個附屬屬性,用於執行各種用戶控件的文本屬性的即時翻譯。爲了達到這個目的,當屬性被設置時,我們鉤住FrameworkElement的Loaded事件。當事件觸發時,我們採用現有的文本屬性值並在其上執行一些簡單的字符串替換,然後將屬性值替換爲已翻譯的文本。但是,這會導致控件使用未翻譯的文本進行渲染,然後文本會快速替換爲已翻譯的版本。Silverlight:在呈現之前是否有事件在FrameworkElement上觸發?

是否有一個替代事件,我們可以掛鉤,將呈現控件之前觸發?

回答

1

我已經更改了我的代碼,以便在調用附加屬性的setter時立即執行翻譯。沒有必要等待FrameworkElement完成加載,因爲我可以在呈現元素之前更改Text屬性。

我對使用Loaded事件的初步想法是僅通過翻譯屏幕上可見的控件來縮短應用程序的啓動時間。事實證明,我重複了運行時執行的一些工作,因爲運行時無論如何都不會調用屬性設置器。

0

我對此不完全確定,但是您可以使用LayoutUpdated事件。它會在控件調整大小時觸發,並且這樣(您可以採取措施確保您的代碼只執行一次。)

我知道這看起來不像是「正確」事件,但不幸的是Silverlight有點讓你站立當涉及到事件的時候,它持有它。

+0

這樣做的麻煩在於LayoutUpdated事件沒有爲發件人提供值,所以我無法確定哪個FrameworkElement的佈局已更新。 – 2009-06-12 02:22:51

相關問題