Ich habe eine Menge Probleme mit Silverlight Weg, um mit Layout umzugehen. Hauptsächlich kann ich keine Möglichkeit finden, die Größe von Zeichenketten vorherzusagen, bevor sie tatsächlich gezeichnet werden. Auf dem iPhone haben wir einige sehr einfache Methoden, die es uns ermöglichen, die Größe zu bestimmen, die eine Zeichenfolge auf dem Bildschirm einnehmen wird, basierend auf der Schriftgröße, der Wortumbruchoption und der verfügbaren Breite und/oder Höhe. Aber mit Silverlight finde ich keine Möglichkeit, konsistente Ergebnisse in meiner App zu erzielen.Silverlight: Wie wird die Stringgröße vorhergesagt?
Ich verwende derzeit die ActuelHeight und ActualWidth einer TextBlock-Instanz, aber es gibt mir zufällige Ergebnisse. Zum Beispiel verwende ich den folgenden Code ...
TextBlock proto = new TextBlock();
proto.Width = 456;
proto.TextWrapping = TextWrapping.Wrap;
proto.Text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
double h = proto.ActualHeight;
... h ist auf 66 Pixel eingestellt! Wie Sie selbst erraten können, ist es unmöglich, dass ein so langer Text auf ein Rechteck von 456 Pixel Breite und 66 Pixel Höhe passt. Und es wird bestätigt, wenn ich den Textblock innerhalb eines Canvas hinzufüge, seine Größe auf {456; 66} setze und die App teste: Der Text passt überhaupt nicht auf den Textblock!
Kann mir jemand erklären, wo das Problem liegt und mich auf eine konsistente (und vertrauenswürdige) Methode zur Messung von Stringgrößen hinweisen?
Vielen Dank im Voraus,
Eric.
Wenn Sie das Scrollen auf auto gesetzt, können Sie den gesamten Text anzuzeigen durch Scrollen, also warum wollen Sie die Größe kennen Pixel? –