为什么这个按钮会被切断?

时间:2012-03-07 15:54:33

标签: wpf xaml

在以下XAML代码中,按钮文本缺少一半。我可以更改Margin属性,很明显,在250px之后内容被隐藏了。为什么会这样,我该如何解决?

<Window x:Class="InnerInterface.InventoryManagement" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="someWindow" Height="500" Width="500">
    <DockPanel HorizontalAlignment="Left" Name="dockPanel1" VerticalAlignment="Top">
        <Grid DockPanel.Dock="Top">
            <Button Name="buttonReturnToMainMenu" Content="someButton" Margin="200,0" Width="125" />
        </Grid>
    </DockPanel>
</Window>

3 个答案:

答案 0 :(得分:16)

水平边距为200,按钮宽度为125,这意味着正确显示控件所需的总宽度约为525.

HorizontalAlignment=Left"上也有DockPanel,这意味着它会以所需的宽度绘制内容,并将其与屏幕左侧对齐,而不是拉伸它以填充所有可用空间。这意味着它会阻挡控件两侧的200空间,并在剩余空间中绘制按钮。如果剩余空间小于125,则会裁剪图像。

如果切换到HorizontalAlignment="Stretch",它将首先绘制控件(带边距),然后拉伸它的大小以使其适合所有可用空间,这样整个控件都会调整大小而不是裁剪。

您可能有兴趣阅读WPF中的this MSDN article on Alignment, Margins, and Padding

修改

如果您希望 Left页边距为200,请使用Margin="200,0,0,0"。使用Margin="200,0"表示左边距和右边距都是200。

答案 1 :(得分:1)

不确定您的确切问题,但也许这应该会有所帮助:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="500" Width="500">
    <DockPanel HorizontalAlignment="Stretch" Name="dockPanel1" VerticalAlignment="Top">
        <Grid DockPanel.Dock="Top" >
            <Button Name="buttonReturnToMainMenu" Content="someButton" Width="125"  />
        </Grid>
    </DockPanel>
</Window>

答案 2 :(得分:1)

问题是按钮Margin设置为:

Margin="200,0"

应设为:

Margin="200,0,0,0"

这消除了右侧边距并允许整个按钮显示。