自动调整WPF中的窗口内容

Moh*_*nde 3 c# wpf autosize

在调试我的WPF程序时,我注意到当窗口是设置大小时,控制看起来很好.但是当窗口最大化时,内容位于相同的位置,就好像窗口没有调整大小一样.我想要它,以便内容和窗口按比例调整大小.我怎样才能做到这一点?对不起,如果这是一个noobish问题,但我在WPF时代有点新.


XAML代码还没有完全准备好,但这里有一些元素:

<DockPanel>
    <StackPanel DockPanel.Dock="Left">
    ...
    </StackPanel>

    <TabControl DockPanel.Dock="Right">
    ...
    </TabControl>

    <ListView>
    ...
    </ListView>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

Dav*_*man 5

通常,这是因为维度值是静态设置的,而不是动态设置的.这是静态方法:

<RowDefinition x:Name="NavigatorRow" Height="120"/>
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Run Code Online (Sandbox Code Playgroud)

两行都有固定的高度,它们不会随窗口大小调整.

这是动态方法:

<RowDefinition x:Name="NavigatorRow" Height="1*"/> 
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Run Code Online (Sandbox Code Playgroud)

底行仍然具有固定高度80,但顶行将扩展以填充可用的任何空间.换句话说,行将随窗口调整大小.列的工作方式相同.

如果我有三行,我可以这样做:

<RowDefinition x:Name="NavigatorRow" Height="1*"/>
<RowDefinition x:Name="CalendarRow" Height="2*"/>
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Run Code Online (Sandbox Code Playgroud)

导航器行和日历行将共享可用空间,日历行占用导航器行高度的两倍.你明白了.

所以,它不是你使用的容器,而是你如何调整容器的大小.如上所述,一个例外是StackPanel,它不能扩展.改为使用网格,因为它可以缩放.