2009-07-11 13 views

Antwort

25

Viewbox ist sehr nützlich, wenn Sie den Inhalt Ihres Fensters proportional skalieren müssen, wenn Sie die Größe des Fensters ändern (zum Beispiel maximieren). In dieser minimalistischen Seite

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Viewbox> 
     <StackPanel> 
      <TextBlock FontSize="14">Example</TextBlock> 
      <Border Background="Aqua" Width="100" Height="100"></Border>      
     </StackPanel> 
    </Viewbox> 
</Window> 

Sie haben einen TextBlock und einen farbigen Rahmen vertikal gestapelt; Wenn Sie dieses Xaml starten, wird das Fenster eine Größe von 300x300 haben, die Schriftart des TextBlocks wird 14 sein und der farbige Rahmen wird 100x100 sein. Wenn Sie das Fenster neu skalieren, sehen Sie sowohl die TextBlock- als auch die Border-Skala entsprechend (so dass sie nicht mehr der Größe entsprechen, die Sie in der XAML angegeben haben), wobei die relativen Proportionen beibehalten werden. Viewbox ist in diesem Zusammenhang sehr nützlich, wenn Sie ein Fenster benötigen, dessen internes Komponentenlayout unabhängig von der endgültigen Auflösung immer gleich aussieht (was wichtig ist, ist das Seitenverhältnis, Gedanke). Dies funktioniert natürlich mit allen Inhalten, die Sie in die Viewbox einfügen (wir hatten zum Beispiel eine Anwendung mit Videos und 3D-Ansichten). Beachten Sie, dass Sie in Visual Studio 2008 den Inhalt der Viewbox im Designer nicht sehen können.

Hoffe diese Hilfe.

+0

Ich habe das Internet für die Ewigkeit Suche nach diesem <. < –

0

Do Sie meinen, Sie möchten, dass das Fenster den gesamten Bildschirm ausfüllt? Der einfachste Weg dies zu tun (ohne weitere Kopfschmerzen zu verursachen) ist, das Fenster zu maximieren.

w.WindowState = WindowState.Maximized; 

EDIT:

Ein skalierbare Fenster-Layout erfordert, dass Sie mit dem XAML-Editor in Visual Studio zu vermeiden! Eigentlich kannst du es im Editor machen, aber es ist sehr schwer.

viel einfacher, die XAML von Hand zu schreiben:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="0" Grid.Row="0">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox> 
    <Label Grid.Column="0" Grid.Row="1">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox> 
</Grid> 

Dies wird Größe das Fenster zu passen, obwohl seltsam aussehen, wie die Zeilen und Spalten werden standardmäßig jede Hälfte den Raum bekommen. Sie können dies außer Kraft setzen, so dass sie eine Höhe von deren Inhalt stattdessen bestimmt haben:

<RowDefinition Height="Auto"/> 

Es kann auch setzen Margen bei einigen Kontrollen helfen, um Platz sie aus:

<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox> 
+0

oh nein ich wünschte, das wäre mein Problem ... Ich möchte den Inhalt auf die Fenstergröße skalieren. –

+0

Ich arbeite nicht mit dem Editor ... Sie verstehen mich nicht, ich will den Inhalt zu wachsen ... nicht zu verbreiten .. –

+0

Sie werden Ihre Frage bearbeiten müssen, denke ich. Meinst du eigentlich, dass jedes Detail vergrößert werden soll, auch die Schriftgrößen? –

2

Wenn Sie skalieren möchten wirklich alles inklusive Schriftgrößen, Sie könnten wahrscheinlich eine Maßstabsumwandlung auf Ihren Inhalt anwenden und seine X- und Y-Werte an die Breite und Höhe des Fensters binden. Sie benötigen dann auch einen Wertkonverter, um diese in den entsprechenden Maßstab zu konvertieren.

+0

Wie mache ich das in MVVM? Ich habe einen Stil für alle meine VMs .. Ich möchte die Skala machen .. –

1

Wenn Sie alles auf die Größe des Fensters skalieren möchten, legen Sie alles in ein Viewbox-Steuerelement.