【问题标题】:Silverlight: Is there an event that fires on a FrameworkElement before it is rendered?Silverlight:在渲染之前是否有在 FrameworkElement 上触发的事件?
【发布时间】:2009-06-09 01:39:21
【问题描述】:

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

是否存在我们可以挂钩的替代事件,它会在控件呈现之前触发?

【问题讨论】:

    标签: silverlight events loaded frameworkelement


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 问题在于 LayoutUpdated 事件没有为发送者提供值,所以我无法确定哪个 FrameworkElement 的布局已更新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2020-12-21
      • 2020-10-26
      • 2022-07-15
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多