Frage

In unserem Silverlight 2-Projekt haben wir eine angefügten Eigenschaft erstellt on-the-fly Übersetzung auszuführen Eigenschaften verschiedener Bedienelemente in Text. Um dies zu erreichen, haken wir das Loaded-Ereignis des FrameworkElement, wenn die Eigenschaft festgelegt ist. Wenn das Ereignis ausgelöst wird, nehmen wir den vorhandenen Text-Eigenschaftswert und führen Sie einige einfache Zeichenfolge Ersetzungen auf sie, bevor der Wert der Eigenschaft mit dem übersetzten Text zu ersetzen. Dies führt jedoch in der Steuerung mit dem nicht übersetzten Text gerendert wird, dann wird der Text schnell mit der übersetzten Version ersetzt wird.

Gibt es eine alternative Veranstaltung wir einhaken können das würde Feuer vor der Kontrolle gemacht wird?

War es hilfreich?

Lösung

Ich habe meinen Code geändert, so dass es nun die Übersetzung durchführt, sobald der Setter für die angefügten Eigenschaft genannt wird. Es gibt keine Notwendigkeit für die FrameworkElement warten fertig geladen zu haben, da ich die Eigenschaft Text ändern kann, lange bevor das Element gerendert wird.

Meine erste Gedanken über das Loaded-Ereignis mit waren die Startzeit der Anwendung zu reduzieren, indem nur die Kontrollen zu übersetzen, die auf dem Bildschirm sichtbar waren. Wie sich herausstellt, bin ich von der Laufzeit durchgeführt einen Teil der Arbeit zu duplizieren, da die Laufzeit Setter nicht die Eigenschaft nennen, bis es sowieso benötigt.

Andere Tipps

Ich bin mir nicht ganz sicher darüber, aber können Sie das LayoutUpdated Ereignis verwenden. Es wird ausgelöst, wenn die Steuerung der Größe verändert wird und so (Sie Maßnahmen ergreifen, könnten Sie den Code nur, um sicherzustellen, führt einmal.)

Ich weiß es nicht wie das „richtige“ Ereignis dies scheint für aber leider Silverlight irgendwie Blätter stehst du da es zu halten, wenn es um Veranstaltungen geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top