锚定标签

时间:2014-08-04 11:25:53

标签: c# .net wpf

我对WPF相对较新,并试图在面板中插入由算法计算的标签。我在代码中创建了标签。我没有使用设计师作为标签。

问题在于,当我将标签添加到面板时,当我调整窗口大小时,它会调整大小。我希望标签的高度和宽度都是固定的。显然它被锚定在窗口的底部(我知道通常的Winforms行为)。

我如何解开它,或给它一个固定的尺寸?

修改

Image

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;
 }

2 个答案:

答案 0 :(得分:2)

如果您只想对宽度和高度进行硬编码,请明确设置标签的WidthHeight属性:

<Label Width="100" Height="20">Hello World</Label>

如果没有其他信息,Grid会自动居中并拉伸其子项,这是您可能会看到的默认行为。

(如果您提供更多代码/标记,我可以提供更详细的解释。)

答案 1 :(得分:0)

我建议改用HorizontalAlignmentVerticalAlignment

<Label HorizontalAlignment="Center" VerticalAlignment="Center" Content="Hello World" />

通过这种方式,标签自动居中,大小由WPF引擎动态调整。

还要记住,在大多数情况下,不应该总是通过代码来开发WPF接口。您可以轻松使用Xaml来解决您的问题。