1

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

コントロールがレンダリングされる前に発生するフック可能な代替イベントはありますか?

4

2 に答える 2

1

アタッチされたプロパティのセッターが呼び出されるとすぐに変換を実行するようにコードを変更しました。FrameworkElement要素がレンダリングされるずっと前にTextプロパティを変更できるので、の読み込みが完了するのを待つ必要はありません。

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

于 2009-08-24T05:55:46.433 に答える
0

これについてはよくわかりませんが、LayoutUpdatedイベントを利用できますか。コントロールのサイズが変更された場合などに起動します(コードが1回だけ実行されるように対策を講じることができます)。

これには「正しい」イベントではないように思われることは承知していますが、残念ながら、Silverlightは、イベントに関しては、そこに立ったままにしておきます。

于 2009-06-09T01:46:46.363 に答える