0
我想有一个WPF面板有两列,其中第二个是固定宽度,并在第一列的右侧。第一列是自动调整大小的。我希望第二列始终在第一列之后,而且当窗口(或父元素)变得太窄并且只有第一列或第一列的一部分适合时,也不会迷路。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>
第二栏开始进行第二裁剪,但是当窗口足够宽,它不是后立即填充停靠第一个,它停靠在右侧。第一列不是自动调整大小的。
当我尝试使用网格时,结果基本相同。当我将列宽设置为*,20,*时,它不起作用,*,20,Auto也不会使其行为与我想要的完全一样。
甚至可以使用某些面板(DockPanel,优先)和布局属性组合,使我的第二列始终显示在第一个列的右侧,但也会在第一个列的宽度结合起来大于父元素宽度,所以在这种情况下,第二列似乎是正确停靠的,而第一列是完全停靠的?
谢谢!
不幸的是,这并没有完全解决我的问题。我希望我的第一个元素最初尽可能少地占用空间,但能够扩展。例如,像WrapPanel中的TextBox一样,它很小,但是当你输入它时,它会延伸。除非没有足够的空间,另一个控件应该紧挨着它,在这种情况下,第二个控件应该保持完全可见并且第一个控件应该部分裁剪。在你的例子中,第一个TextBlock扩展到Grid中的剩余宽度,它不会水平保持尽可能小。另外,第二个元素应该是固定的宽度。谢谢,认为:) – user2171565 2013-03-19 16:33:07
所以基本上你不希望网格拉伸。设置网格的水平对齐,看看是否有效 – failedprogramming 2013-03-19 21:13:14