我有一些带有几种形式的wpf应用程序。在设计时它们很小,并且它们没有设置为自动尺寸。然而,在运行时它们是巨大的,即使它们没有任何内容使它们变大。
为什么会这样?
以下是其中一种表格
<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>
答案 0 :(得分:35)
如果您使用以下代码创建<Window/>
:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" />
然后,当您从Visual Studio运行它时,它将显示一个与您在问题中放置的窗口大小相同的窗口。所以这不是你明确做的任何事情。
您遇到的是WPF Window
的默认计算大小。对于不同的结果,请在窗口中指定SizeToContent
参数,如paxdiablo所指出,或使用MinHeight
,MaxHeight
,Height
,{显式设置窗口大小{1}},MinWidth
和/或MaxWidth
属性。
答案 1 :(得分:7)
为什么不添加一个:
Height="296" Width="634"
到Window
定义?我不确定默认大小的来源,但我已经在我的窗口设置了特定的大小来解决这个问题。然后我在应用程序启动代码中动态调整大小。
我希望WPF会有一个类似pack
的功能,它会根据子控件的首选大小递归设置控件(Swing和wxPython都有此功能)所以你可能想要去寻找那个。
实际上,一些搜索已经显示了Window.SizeToContent
属性,这可能是您正在寻找的属性。默认值为Manual
但是,如果您将其设置为其他值之一(Width
,Height
或WidthAndHeight
),则可能会看到更好的演示文稿。
事实上,我刚刚接到Windows笔记本电脑并输入了:
SizeToContent="WidthAndHeight"
进入Window定义,看起来大小合适。因此,我建议尝试一下,看看它是否修复了(或者至少解决了)你的问题。
答案 2 :(得分:6)
在设计中,您看到的很小,因为您有窗口的混合设计属性。
d:DesignHeight =“296”d:DesignWidth =“634”
由于Grid是一个动态布局,它将延伸到窗口的宽度和宽度。高度。要限制窗口大小,您需要提到Height&amp;窗口的宽度属性。