我想要一个带有两列的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,Auto也不会使其表现完全符合我的要求。
甚至可以使用一些Panel(DockPanel,可预先设置)和布局属性组合来使我的第二列始终显示在第一列的右侧,但是当它们的两个宽度组合时,也会使第一列显示为第一列大于父元素宽度,所以在这种情况下,第二列似乎是右对接的,第一列是完全停靠的?
谢谢!
答案 0 :(得分:0)
您可以尝试使用网格控件。
<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也设置为修复大小,在本例中为窗口。 我希望这可以帮到你。