WPF-Schriftartenskalierung

8

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.

    
Martin 10.11.2009, 09:35
quelle

4 Antworten

0

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.

    
Pieter Breed 10.11.2009 11:38
quelle
0

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.

    
Jojo Sardez 03.03.2010 02:55
quelle
0

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.

    
el-nino 26.06.2017 09:15
quelle
-1

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%     
Ray Burns 03.03.2010 20:06
quelle