在Designer中,一切看起来都不错,但在Debbuging中,一个奇怪的白色矩形覆盖了它的一部分(如果我没有在Button中设置任何边距,看起来很好)。
<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>
我做错了什么?
答案 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列。
非常重要的是,我已从按钮中删除了保证金定义。在我看来,这种定位控制始终是一个错误。
我认为布局或多或少都是你想要的。