2009-09-13 2 views
20

Wie relative Größe des Benutzersteuerelements wie Bild (im Bildeditor).Wie wird die Größe des Benutzersteuerelements relativ skaliert?

Beispiel (100%):

alt text http://stegnar.com/pic/normalPicture.png

Verkleinerte UC (70%):

alt text http://stegnar.com/pic/normalPicture70percent.png

Nun, ich erreichen dies in Bild-Editor, aber ich möchte in WPF . :) Ich brauche dies, um meine Anwendung auf unterschiedliche Bildschirmauflösung einzustellen, während sich nichts versteckt (keine Bildlaufleisten).

Antwort

29

Sie könnten das ViewBox-Steuerelement ausprobieren, das seinen Inhalt nach oben/unten skaliert, so dass es den verfügbaren Platz ausfüllt.

<Window x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:WpfApplication1" 
Title="Window1"> 
<Grid> 
    <Viewbox StretchDirection="Both" Stretch="Uniform"> 
     <local:UserControl1 Height="600" Width="600"/> 
    </Viewbox> 
</Grid> 

+0

Großartig! Genau das brauche ich. –

5

Verwendung von Viewbox (wie gesagt von Milan Nankov) ist eine gute Idee. Eine Sache, die ich euch warnen muss, ist, dass sie auch andere visuelle Aspekte vergrößert oder verkleinert.

Zum Beispiel unterscheidet sich eine Textbox mit der Dimension 200 X 1000 sehr von einer Textbox mit der Dimension 20 X 100, die 10-fach vergrößert wurde.

WPF bietet viele Layout-Optionen, die die Größe der Steuerelemente je nach Größe des Containers ändern können. Aber es ändert nicht die Größe des Textes. Viewbox überwindet dieses Problem, führt jedoch zu einem anderen Problem. Überprüfen Sie das Bild unten, das dasselbe Textfeld in einer Viewbox vor und nach dem Zoomen zeigt.

Artifacts introduced by the use of viewbox

Ein Trick, der verwendet werden könnte, ist jedes TextBlock- in einem Sichtgerät zu platzieren. Aber ich denke, das wäre ein Overkill, und ich habe wirklich keine Unterstützung für diesen Trick. Bitte überprüfen Sie selbst und antworten Sie, ob es praktisch ist oder nicht.

Ein weiterer Trick könnte sein, die Höhe des Steuerelements an die Schriftgröße zu binden. Wir würden in diesem Fall einen Konverter benötigen. Bitte auf diese Antwort .. Resize font in TextBox in Grid

5

Sie den gesamten Behälter in einen ViewBox platzieren können

<Viewbox StretchDirection="Both" Stretch="Uniform"> 
    <Grid>...</Grid> 
</Viewbox> 

Sie müssen nicht platzieren Sie jeden einzelnen Textblock in it!