我对WPF相对较新,并试图在面板中插入由算法计算的标签。我在代码中创建了标签。我没有使用设计师作为标签。
问题在于,当我将标签添加到面板时,当我调整窗口大小时,它会调整大小。我希望标签的高度和宽度都是固定的。显然它被锚定在窗口的底部(我知道通常的Winforms行为)。
我如何解开它,或给它一个固定的尺寸?
修改
XAML:
<Window x:Class="TestWrapper.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MyTest" Height="483.833" Width="525" Loaded="Window_Loaded">
<Grid x:Name="MyGrid" Margin="0">
<Grid.Background>
<ImageBrush ImageSource="Resources/Background.jpg" Stretch="Uniform"/>
</Grid.Background>
</Grid>
</Window>
代码:
if (!_initialized)
{
Label lbl = new Label()
{
Content = "Test",
FontSize = 36,
Foreground = new SolidColorBrush(Colors.Red),
Background = new SolidColorBrush(Colors.Black),
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center,
VerticalAlignment = System.Windows.VerticalAlignment.Top
};
this.MyGrid.Children.Add(lbl);
lbl.Margin = new Thickness(0, this.MyGrid.ActualHeight + lbl.ActualHeight, 0, 0);
this._initialized = true;
}
答案 0 :(得分:2)
如果您只想对宽度和高度进行硬编码,请明确设置标签的Width
和Height
属性:
<Label Width="100" Height="20">Hello World</Label>
如果没有其他信息,Grid
会自动居中并拉伸其子项,这是您可能会看到的默认行为。
(如果您提供更多代码/标记,我可以提供更详细的解释。)
答案 1 :(得分:0)
我建议改用HorizontalAlignment
和VerticalAlignment
。
<Label HorizontalAlignment="Center" VerticalAlignment="Center" Content="Hello World" />
通过这种方式,标签自动居中,大小由WPF引擎动态调整。
还要记住,在大多数情况下,不应该总是通过代码来开发WPF接口。您可以轻松使用Xaml来解决您的问题。