2009-06-09 14 views
1

Silverlight 2プロジェクトでは、さまざまなユーザーコントロールのテキストプロパティへのオンザフライ変換を実行するための添付プロパティを作成しました。これを実現するために、プロパティが設定されたときにFrameworkElementのLoadedイベントをフックします。イベントが発生すると、プロパティの値を翻訳されたテキストに置き換える前に、既存のテキストプロパティ値を取得し、単純な文字列置換を実行します。しかし、この結果、翻訳されていないテキストでコントロールがレンダリングされ、テキストは翻訳されたバージョンにすばやく置き換えられます。Silverlight:FrameworkElementがレンダリングされる前に発生するイベントはありますか?

コントロールがレンダリングされる前に起動する別のイベントがありますか?

答えて

1

添付プロパティの設定ツールが呼び出されるとすぐに翻訳を実行できるようにコードを変更しました。 FrameworkElementの読み込みが完了するのを待つ必要はありません。要素がレンダリングされる前にTextプロパティを変更することができます。

Loadedイベントの使用についての私の最初の考えは、画面上に表示されたコントロールを変換するだけで、アプリケーションの起動時間を短縮することでした。実際には、実行時に必要となるまで、ランタイムはプロパティセッターを呼び出さないため、ランタイムによって実行される作業の一部を複製しています。

0

私はこれについて完全にはわかりませんが、LayoutUpdatedイベントを使用できますか。

これは「正しい」イベントのようには思えませんが、残念なことにSilverlightはあなたの立場に立つままになります(これは、あなたのコードが一度しか実行されないようにするための手段です)それはイベントになるとそれを保持しています。

+0

この問題は、LayoutUpdatedイベントが送信者の値を提供しないため、どのFrameworkElementのレイアウトが更新されたかを判断できないということです。 –

関連する問題