如果DockPanel.LastChildFill = true,则不会填充WPF文本框

时间:2019-02-20 18:52:52

标签: wpf layout dockpanel

为什么我的TextBox不能填充其DockPanel父级中的可用空间?我希望它可以拉伸以填充剩余的水平空间。该按钮很好地附加在右侧。我将其放在窗口顶部:

<DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" >
    <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
    <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
</DockPanel>

TextBox附着在左侧,但大约5像素宽。它是最后一个孩子,默认设置为DockPanel.Dock = Left,Horizo​​ntalAlignment = Stretch。我尝试了其他的停靠和对齐值,但没有成功。 TextBox是通常的布局规则的例外吗?

2 个答案:

答案 0 :(得分:2)

设置DockPanel.LastChildFill = true

您要添加的最后一个孩子是什么?

按钮。

不是文本框。

顺序是最高(第一)到最低(最后)。

我不确定您想要什么结果,但是也许您只需要使文本框成为最后一个孩子即可即可。

    <DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" >
        <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
        <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
    </DockPanel>

答案 1 :(得分:-1)

这似乎对我有用:

<DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" LastChildFill="True">
    <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
    <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
</DockPanel>