Pourquoi ma fenêtre WPF tailles défaut d'être énorme
J'ai une application wpf avec un peu de formes. Au moment de la conception qu'ils sont petits, et ils ne sont pas définis automatique de la taille. Cependant au moment de l'exécution, ils sont géant, même avec pas de contenus pour les rendre plus gros.
Pourquoi est-ce arrivé?
Ici est l'une des formes
<Window x:Class="SuperPluginPicker"
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:tree="clr-namespace:Aga.Controls.Tree;assembly=Aga.Controls"
mc:Ignorable="d"
d:DesignHeight="296" d:DesignWidth="634" Title="Plugin Selector" WindowStartupLocation="CenterOwner">
<Grid>
<DockPanel LastChildFill="true">
<StackPanel DockPanel.Dock="Bottom" Height="30" Orientation="Horizontal">
<Button Content="Ok" Name="btnOk" Click="btnOk_Click"></Button>
<Button Content="Cancel" Name="btnCancel" Click="btnCancel_Click"></Button>
</StackPanel>
<StackPanel DockPanel.Dock="Right">
<Label Content="Selected Plugins"></Label>
<ListBox Name="lstSelectedPlugins" Width="200">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<StackPanel DockPanel.Dock="Right" Width="100" VerticalAlignment="Center">
<Button Content="Add" Name ="btnAdd" Click="btnAdd_Click"></Button>
<Button Content="Remove" Name="btnRemove" Click="btnRemove_Click"></Button>
<Button Content="Remove All" Name="btnRemoveAll" Click="btnRemoveAll_Click"></Button>
</StackPanel>
<tree:TreeList x:Name="pluginTree">
<tree:TreeList.View>
<GridView x:Name="treeGrid">
<GridView.Columns>
<GridViewColumn Width="Auto" Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<tree:RowExpander/>
<TextBlock Text="{Binding Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Author" Width="Auto" DisplayMemberBinding="{Binding Author}"/>
<GridViewColumn Header="Description" Width="Auto" DisplayMemberBinding="{Binding Type}"/>
</GridView.Columns>
</GridView>
</tree:TreeList.View>
</tree:TreeList>
</DockPanel>
</Grid>
</Window>
- De quelle taille sont-ils au moment de l'exécution? 634x296?
- im l'exécution d'un 1900x1280 grand écran et la fenêtre ne laisse qu'environ un 1/2 pouce de chaque côté de l'écran. (bien 1/2 pouces en haut à gauche et en bas. peut-être de 2 pouces sur la droite. mais tout de même très grand)
- double possible de la Taille de la Fenêtre lors de la SizeToContent n'est pas spécifié
Vous devez vous connecter pour publier un commentaire.
Si vous créez un
<Window/>
avec ce code:Puis lorsque vous exécutez à partir de Visual Studio, il va afficher une fenêtre de la même taille que celui que vous mettez dans votre question. Donc ce n'est pas quelque chose que vous avez explicitement fait.
Ce que vous avez rencontré la valeur par défaut est calculée de la taille d'un WPF
Window
. Pour des résultats différents, spécifiez unSizeToContent
paramètre sur la Fenêtre, comme paxdiablo souligné, ou de définir explicitement la taille de votre fenêtre avec leMinHeight
,MaxHeight
,Height
,MinWidth
,MaxWidth
, et/ouWidth
propriétés.CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
vous donne la même taille de fenêtre WPF n'. WPF n'est pas la sélection de la taille par défaut: Windows fait que lui-même, à l'aide d'un algorithme, qui est restée à peu près la même depuis Windows 2.0 est sorti en 1987.Width
etHeight
dans le volet de propriétés est l'établissement le designer, la Largeur et la Hauteur des pas, la Largeur et la Hauteur..Pourquoi ne pas simplement ajouter un:
à la
Window
définition? Je ne suis pas sûr de l'endroit où la taille par défaut, mais j'ai mis des tailles précises sur mon windows pour contourner ce problème. Puis-je redimensionner dynamiquement au démarrage de l'application du code.Je suis en espérant que WPF aura un
pack
-comme fonctionnalité où il récursivement ensembles de contrôles basés sur les tailles des sous-commandes (Swing et wxPython avaient tous les deux de cette fonction) de sorte que vous pouvez aller à la recherche pour que.En fait, un peu de recherche a allumé la
Window.SizeToContent
propriété qui peut être ce que vous cherchez. Son défaut estManual
mais, si vous définissez l'une des autres valeurs (Width
,Height
ouWidthAndHeight
), vous pouvez voir une meilleure présentation.En fait, j'ai juste piqué sur l'ordinateur portable et est entré:
dans la définition de la Fenêtre et il est de taille parfaite. Donc, je vous suggère de donner un essai et voir si cela résout (ou au moins, travaille autour) votre problème.
SizeToContent
dans l'avenir (voir ma mise à jour) et ne pas compter sur quelques MS flunkie raison 🙂Dans la conception que vous voyez les petits parce que vous avez la conception de mélange de propriétés de la fenêtre.
d:DesignHeight="296" d:DesignWidth="634"
Depuis la Grille est une mise en page dynamique, il va être étendue à la largeur de la fenêtre de & de la hauteur. À vous limiter la taille de la fenêtre vous avez besoin de mentionner la Hauteur & Largeur des propriétés de la fenêtre.