[英]WPF grid layout and how to deal with too narow window
我想要一个WPF面板,其中有两列,第二列是固定宽度,在第一列的右侧。 第一列是自动调整大小的。 我希望第二列始终在第一列之后,但也不要在窗口(或父元素)变得太窄且仅适合第一列或第一列的一部分时迷路。
当我像这样使用DockPanel时:
<DockPanel DockPanel.Dock="Top">
<Label Content="I am autosize" DockPanel.Dock="Left" />
<Label Content="I come right after the first column" />
</DockPanel>
第一列是可见的,第二列是紧随其后的,当我开始调整窗口大小以使其更窄时,首先,第二列被裁剪直到消失为止,第一列被裁剪。
当我使用这个:
<DockPanel DockPanel.Dock="Top">
<Label Content="I come right after the first column" DockPanel.Dock="Right" />
<Label Content="I am autosize" />
</DockPanel>
第二列开始被裁剪,但是当窗口足够宽时,在第一列填充后不正确,它将停靠在右边。 第一列不是自动调整大小的。
当我尝试使用Grid时,结果基本相同。 当我将列宽设置为*,20,*时,它不起作用,*,20,自动也无法使其行为完全符合我想要的方式。
甚至可以使用某些面板(最好是DockPanel)和布局属性的组合来使我的第二列始终总是立即显示在第一列的右侧,但是当它们的两个宽度的总和大于父元素的宽度,因此在这种情况下,第二列似乎是对接的,而第一列是对接的?
谢谢!
您可以尝试使用Grid控件。
<Window x:Class="WpfApplication6.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
MinWidth="200">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition MinWidth="200"/>
</Grid.ColumnDefinitions>
<TextBlock Text="I am autosize"
Background="Red" />
<TextBlock Text="I come right after the first column"
Grid.Column="1"
Background="AliceBlue"
Width="200"
HorizontalAlignment="Left" />
</Grid>
唯一的问题是,您还必须将父控件MinWidth设置为固定大小,在本示例中为窗口。 希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.