2017-12-31 159 views
0

Ich bin neu zu verwenden wpf, nachdem Windows-Formulare für eine Weile verwendet. Ich versuche, eine einfache Benutzeroberfläche zu erstellen, deren Größe sich an der Bildschirmgröße orientiert. Wenn ich jedoch die Anwendung starte, wird normalerweise nur ein Teil des Bildschirms ausgeblendet. In diesem Fall muss der 'lower_Border' den verbleibenden Platz füllen und die Größe seines internen Inhalts ändern, ich kann es nicht dazu bringen. Ich habe den folgenden Code beigefügt. Vielen Dank im VorausWPF Größe ändern Problem

<UserControl x:Name="User_MainTemplate" x:Class="EventsUnlimited.UserControl2" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:EventsUnlimited" 
     mc:Ignorable="d" 
     d:DesignHeight="{x:Static SystemParameters.PrimaryScreenHeight}" d:DesignWidth="{x:Static SystemParameters.PrimaryScreenWidth}"> 
<Grid Height="{x:Static SystemParameters.PrimaryScreenHeight}" Width="{x:Static SystemParameters.PrimaryScreenWidth}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Border HorizontalAlignment="Center" Height="100" VerticalAlignment="Top" Width="{x:Static SystemParameters.PrimaryScreenWidth}" Background="#FF1291DA" /> 
    <Border x:Name="lower_Border" HorizontalAlignment="Stretch" Grid.Row="1" VerticalAlignment="Stretch" Background="#FF143199" > 
     <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="1133" > 
      <TabControl HorizontalAlignment="Stretch" Height="937" VerticalAlignment="Stretch" Width="1872" > 
       <TabItem Header="TabItem"/> 
       <TabItem Header="TabItem"> 
        <Grid Background="#FFE5E5E5"/> 
       </TabItem> 
      </TabControl> 
     </Grid> 

    </Border> 
</Grid> 

+0

Für diese Art der Bestellung verwende ich normalerweise ein Dock-Panel: https://wpftutorial.net/DockPanel.html Es ist, was wir für diese "Office Application Design" seit zurück in Windows Forms verwendet. – Christopher

Antwort

0

Sie haben die zweite <RowDefinition Height="Auto" /> und es muss festgelegt werden <RowDefinition Height="*" /> zu spielen. Auto passt es an den Inhalt an, der Stern passt es an.

+0

Ich denke ich verstehe. Auto Größe das Gitter auf die Größe des Elements und * nutzt alle verfügbaren Speicherplatz? Um die Größe des Inhalts zu ändern, verwenden Sie eine Viewbox? Thanks – Bleari

+0

Nein, eine ViewBox dient zum Skalieren von Inhalten auf eine bestimmte Größe und Beibehaltung Aspekt. Ähnlich wie Sie die Schriftgröße einstellen können, wenn Sie Objekte in ViewBox platzieren, werden sie auf die Größe der ViewBox vergrößert/verkleinert. –

+0

Ich denke, das Problem war, dass der Inhalt nicht auf die richtige Größe z. Das Registersteuerelement wurde nicht geändert, um innerhalb der Grenzen des Rahmens zu bleiben. Das Hinzufügen einer Viewbox behebt dieses Problem. – Bleari

0

Auf dem Tab-Steuerung, Sie geben Höhe einen expliziten Wert von 937, versuchen zu entfernen Height = 937

+0

Ich habe das versucht, aber wenn es entfernt wird, wird die Höhe auf den Bereich gesetzt, in dem sich etwas befindet. Ich brauche es jedoch, um einen festgelegten Bereich des Bildschirms aufzunehmen, auch wenn es leer ist. – Bleari

0

Stellt sich heraus, ich war falsch über das Netz. Das Raster wird die Größe zwischen den Elementen ändern.

Um die Größe des Elements selbst zu ändern, müssen Sie eine virtuelle Box verwenden und das Element darin einfügen.