【发布时间】:2010-04-01 13:42:24
【问题描述】:
我在 WPF 中定义了一个窗口,在这个窗口中我放了一个“堆栈面板”,在这个面板中我放了一个“选项卡控件”和一些“按钮控件”。
在执行程序时,我希望当我必须使用鼠标调整窗口大小时,堆栈面板和其中的所有控件也可以自动调整大小并与窗口成比例。
我怎样才能得到这个?
谢谢!!
【问题讨论】:
标签: .net wpf xaml wpf-controls
我在 WPF 中定义了一个窗口,在这个窗口中我放了一个“堆栈面板”,在这个面板中我放了一个“选项卡控件”和一些“按钮控件”。
在执行程序时,我希望当我必须使用鼠标调整窗口大小时,堆栈面板和其中的所有控件也可以自动调整大小并与窗口成比例。
我怎样才能得到这个?
谢谢!!
【问题讨论】:
标签: .net wpf xaml wpf-controls
StackPanel 只使用其子控件需要的空间;它确实不会调整到窗口的可用空间。
如果您想要这种行为,请使用不同类型的面板:如果您只想调整选项卡控件的大小,请使用 DockPanel 并使选项卡控件成为 DockPanel 的最后一个子项。 DockPanel 延伸到父级的可用空间,最后一个子级获得之前子级未使用的所有空间。
<DockPanel>
<Button DockPanel.Dock="Bottom" />
<Button DockPanel.Dock="Bottom" />
<TabControl>
...
</TabControl>
</DockPanel>
如果您需要更复杂的间距行为(例如,您希望按钮也按比例占用更多空间),请查看Grid 控件。
【讨论】:
如果您希望所有内容都均匀地放大和缩小,最终可能会得到巨大或微小的控件和字体,请将整个窗口内容(当前为 StackPanel)包装在 Viewbox 控件中。
【讨论】:
<Viewbox><StackPanel>...</StackPanel></Viewbox> 是完全有效的 XAML——我刚刚在 VS2008 SP1 中尝试过。确保您没有尝试包装 <Window>。