首页 > 解决方案 > WPF 无法将控件停靠在停靠面板中,画布似乎改为居中

问题描述

使用 xaml 标记时

<Window x:Class="Foo.Bar.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="400" Width="400">
    <DockPanel LastChildFill="True">
        <Canvas DockPanel.Dock="Right" Width="100" />
    </DockPanel>
</Window>

...似乎画布没有停靠在右侧。

为什么?

相反,它变得居中。

在此处输入图像描述

标签: wpf

解决方案


您已LastChildFill设置为true. 由于你DockPanel只有一个孩子,它也是最后一个孩子,所以它被覆盖到Fill. 它居中的原因是Width已明确设置为100。由于它无法填充该覆盖,因此它会尽力而为,并将其居中。

简单地删除LastChildFill不会解决问题,因为默认值为true. 要解决此问题,您必须明确设置LastChildFillfalse.

这些默认设置的原因DockPanel通常用于容纳多个子控件,其中首先列出停靠到不同侧面的子控件,最后一个子控件占据剩余区域。仅与一个孩子一起使用它是相当不寻常的。


推荐阅读