Ich habe eine WPF-Anwendung, bei der die Benutzeroberfläche so skaliert werden sollte, dass sie größer wird, wenn die Fenster größer werden. In einem der Dialoge muss ich einem Benutzer eine Liste von Elementen präsentieren, und der Benutzer sollte auf einen von ihnen klicken. Die Liste enthält 1 bis 15-20 Elemente. Ich möchte die Schriftgröße für jedes einzelne Element so groß wie die Schriftgröße für die anderen Elemente in der Liste sein, aber gleichzeitig möchte ich die Schriftgröße erhöhen, wenn das Fenster größer gemacht wird.
Im Moment sieht mein Testcode wie folgt aus.
%Vor% Wenn die Anwendung gestartet wird und das Fenster groß ist, sieht alles gut aus. Wenn die Fensterbreite verringert wird, wird die Schriftgröße des Texts Test Longer String
verkleinert, aber die Schriftgröße für T
und Test
bleibt gleich. Ich verstehe, warum das passiert - die Viewbox skaliert den Inhalt auf seine maximale Größe. Was ich wissen möchte ist, welche Methode ich verwenden sollte, um dieses Problem zu lösen.
Ich möchte den Steuerelementen keine bestimmten Schriftgrößen geben, da einige Benutzer dies auf Bildschirmen mit niedriger Auflösung wie 640x480 ausführen und andere größere Widescreens.
BEARBEITEN:
Ich habe versucht, meinen Code wie folgt zu ändern:
%Vor%Aber mit der Größe der Schaltfläche werden auch die Ränder vergrößert, so dass die Schaltflächenränder auf großen Bildschirmen einen Zentimeter breit werden.
Probieren Sie Folgendes aus: Rendern Sie Ihre Textelemente wie zu einem anderen Zeitpunkt:
TextBlock
s in einem ItemsControl enthalten? ListBox
? Platziere den gesamten Shebang in einem ViewBox
und stelle ihn auf deine Bedürfnisse ein. Suchen Sie nach horizontalen, vertikalen oder kombinierten Skalierungseigenschaften.
Diese Problemumgehung könnte helfen:
%Vor%Der Schlüssel ist, alle Textblöcke auf die gleiche Breite zu setzen. In diesem Fall folgen alle dem längsten Textblock durch Bindung.
Ich musste eine Lösung für eine unabhängige Lösung machen und habe diese Antwort hier gemacht: Tipps zur Entwicklung einer auflösungsunabhängigen Anwendung
Ihre Anwendung skaliert (oder zoomt), je nach Auflösung.
Der einfachste Weg ist wahrscheinlich, einen Dekorateur zu konstruieren, der die Aufgabe erledigt. Sie könnten es "VerticalStretchDecorator" oder etwas ähnliches nennen.
Hier ist, wie es verwendet würde:
%Vor% Ich habe UniformGrid
anstelle von Grid
verwendet, aber es funktioniert genauso mit Grid
.
Es wäre so etwas wie folgt implementiert:
%Vor%Tags und Links wpf user-interface font-size scaling