2016-03-20 7 views
0

Ich habe ein Fenster:Fenster nicht Inhalt

<Window x:Class="HarryPotter.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:HarryPotter" 
     mc:Ignorable="d" 
     Title="Harry Potter" SizeToContent="WidthAndHeight" Background="Black" WindowStartupLocation="CenterScreen" 
     > 
    <Viewbox Stretch="Uniform"> 
     <Canvas Height="640" Width="480" Background="DodgerBlue"> 

     </Canvas> 
    </Viewbox> 
</Window> 

im Designer der ViewBox Width = 480 und Höhe = 640. So ist die Breite der Fenster und Höhe ist 488 und 671. Das ist genau das, was ich wollen.

Ich möchte, dass die ViewBox die gleiche Größe wie Canvas beim Start und das Fenster auf die Größe von ViewBox hat. Dann möchte ich, dass das Fenster frei skalierbar ist. Dies geschieht jedoch nicht. Wenn sich das Fenster öffnet, ist die Höhe die Höhe meines Monitors.

Wie kann ich das beheben?

Antwort

1

Sie verwenden eine ViewBox, um den Inhalt durch gleichmäßige Dehnung in den verfügbaren Raum einzupassen. Da Sie jedoch für den verfügbaren Platz keine Höhe oder Breite definiert haben (SizeToContent = "WidthAndHeight"), benötigt er den gesamten Platz, damit er die Leinwand ausdehnen kann.

Zum Experimentieren können Sie Height="50" setzen und sehen, dass das Fenster den gesamten horizontalen Raum einnimmt.

es vermeiden Sie haben ein paar Optionen:

  • Set Stretch Eigenschaft ViewBox-None statt Uniform.
  • Stellen Sie eine vordefinierte Width oder Height für Ihre Window ein.
  • Set MaxHeight oder MaxWidth Eigenschaft von ViewBox.