奇怪的白色盒子覆盖控件

时间:2018-04-08 03:12:12

标签: wpf

在Designer中,一切看起来都不错,但在Debbuging中,一个奇怪的白色矩形覆盖了它的一部分(如果我没有在Button中设置任何边距,看起来很好)。

Designer

While Debugging

<Window x:Class="MyProgram.MainWindow" ResizeMode="NoResize"
    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"
    xmlns:local="clr-namespace:MyProgram"
    mc:Ignorable="d"
    Title="MyProgram" Height="450" Width="650">

<Grid>
    <Label Content="Things:" HorizontalAlignment="Left" Margin="0,7,0,0" VerticalAlignment="Top" FontSize="22"/>
    <Button Height="28" Width="180" Background="Transparent" BorderThickness="0" Margin="454,15,10,378" >
        <StackPanel Orientation="Horizontal">
            <Image Source="Resources/addpackage2.png" Width="35" />
            <TextBlock Text="Add" Margin="3,0,3,0" FontSize="18" />
        </StackPanel>
    </Button>
</Grid>

我做错了什么?

1 个答案:

答案 0 :(得分:1)

按钮边距=&#34; 454,15,10,378&#34;正在限制按钮的可用空间。如果你使窗口变大,你会看到整个按钮。

修改

在XAML中组织布局有不同的方法,但通常网格是一个不错的选择。

这是你可以写的一种方式。

<Grid>

  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="*"/>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="Auto"/>
  </Grid.ColumnDefinitions>

  <Label Grid.Row="0" Grid.Column="0" Content="Things:" HorizontalAlignment="Left" Margin="7" VerticalAlignment="Top" FontSize="22"/>
  <Button Grid.Row="0" Grid.Column="1" Height="28" Width="180" Background="Transparent" BorderThickness="0" >
    <StackPanel Orientation="Horizontal">
      <Image Source="Resources/addpackage2.png" Width="35" />
      <TextBlock Text="Add" Margin="3,0,3,0" FontSize="18" />
    </StackPanel>
  </Button>

</Grid>

我已将行和列定义添加到网格中。在这种情况下,有两行和两列。

顶行根据其内容自动调整大小。第二行填充剩余空间。

同样,右侧列根据其内容自动调整大小,左侧列填充剩余空间。

这只是一个例子。您可能想要定义不同的布局。我认为屏幕的底部并不总是白色空间。

定义了行和列后,您可以通过指定Grid.Row和Grid.Column属性将各个控件分配给网格中的单元格。

我已将您的标签放在第0行第0列,我已将该按钮放在第0行第1列。

非常重要的是,我已从按钮中删除了保证金定义。在我看来,这种定位控制始终是一个错误。

我认为布局或多或少都是你想要的。