如何将WPF框架扩展到其父宽度?

62 浏览
0 Comments

如何将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控件可以更好地控制布局,但我对这个布局感到困惑。

0
0 Comments

问题原因:在WPF中,想要将一个Frame控件的宽度扩展到其父控件的宽度,需要设置HorizontalAlignment属性为Stretch。但是有些情况下,这种方法并不起作用。

解决方法:将Frame控件的HorizontalAlignment属性设置为Stretch即可实现宽度扩展。但需要注意,要确保移除掉width属性的设置。以下是代码示例:


    

这种方法可能在某些情况下不起作用,但对于大多数情况而言是有效的。

0
0 Comments

如何扩展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小时内你在哪里..非常感谢你。

0
0 Comments

问题的原因是WPF中的Frame无法自动扩展到其父容器的宽度。为了解决这个问题,可以使用Grid布局或将标签放置在顶部而不是右侧。

使用Grid布局的方法如下:


    
        
            
            
        
        
        
    

另一种解决方法是将标签放置在顶部,而不是右侧。我注意到UWP中有一个内置的Header属性可以用于此目的,不确定在WPF中是否存在该属性。以下是将标签放置在顶部的方法:


0