如何将WPF框架扩展到其父宽度?
如何将WPF框架扩展到其父宽度?
我在一个Orientation设置为Horizontal的StackPanel中有一个TextBox控件,但无法使TextBox填充剩余的StackPanel空间。
XAML代码如下:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="180" Width="324">
为什么TextBox没有填充StackPanel?
我知道通过使用Grid控件可以更好地控制布局,但我对这个布局感到困惑。
如何扩展WPF框架以适应其父级宽度?
在WPF中,使用StackPanel时会遇到这个问题,这是“按设计”行为。StackPanel用于“堆叠”元素,即使在可见区域之外,它也不会允许您填充堆叠维度中的剩余空间。
您可以使用DockPanel,并将LastChildFill设置为true,将所有非填充控件都停靠在Left以模拟所需效果。
DockPanel.Dock="Left" VerticalAlignment="Center"/> 请注意,默认情况下,LastChildFill设置为“True”,并且将TextBox的HorizontalAlignment设置为Stretch不起作用。 是的...我复制并粘贴了原帖的代码,但忘记删除HorizontalAlignment。 说真的,这是按设计吗?看起来很奇怪,因为控件本身显然跨越了整个宽度。您是说内容区域不一定与可见区域相同吗? 是的。StackPanel是为ListBox等控件创建的。在ListBox中,StackPanel确实占用了所有可见空间,但项目可能超出可见区域(滚动)。此行为仅在堆叠维度中存在,因此如果Orientation="Horizontal",则子控件可以占用所有垂直空间,反之亦然。 以下是一些相关问题:stackoverflow.com/questions/569095/... stackoverflow.com/questions/832216/... 我已经很久没有做WPF相关的工作了,但您可以尝试使用某种网格,将第一列设置为占用可用空间。 我有点晚来到这里,但是您可以在DockPanel上使用FlowDirection="RightToLeft",这样最后一个子控件将是左侧的,使用剩余空间。 使用DockPanel是解决此问题的一种奇怪的方法。最好学习如何使用Grid控件。 24小时内你在哪里..非常感谢你。