C# 动态宽度矩形内的中心标签

C# 动态宽度矩形内的中心标签,c#,wpf,C#,Wpf,我有一个窗口,上面有一个长方形的画布。它将拉伸以填充画布的宽度。画布设置为最大化,没有工具栏填充整个屏幕,如下所示: <Window x:Class="Ericsson.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://s

我有一个窗口,上面有一个长方形的画布。它将拉伸以填充画布的宽度。画布设置为最大化,没有工具栏填充整个屏幕,如下所示:

<Window x:Class="Ericsson.MainWindow"
    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:Ericsson"
    mc:Ignorable="d"
    Title="MainWindow"  WindowStyle="None"   
    WindowState="Maximized">
<Window.Resources>
    <SolidColorBrush x:Key = "brushResource" Color = "Black" />
</Window.Resources>

    <Canvas x:Name="MyCanvas" >
        <Rectangle x:Name="TopRect" Fill="Black" Height="120" Canvas.Top="0" Canvas.Left="0" Width="{Binding ElementName=MyCanvas, Path=ActualWidth}"/>
        <Label Content="Welcome to My World" Foreground="#FFFFFF" FontSize="24"
               HorizontalAlignment="Center" 
               VerticalAlignment="Center" 
        />
    </Canvas>

</Window>
我的问题是,我有一个标签,需要在动态矩形内居中。上面的XAML代码将标签放在左上角。所以水平对齐和垂直对齐不起作用

如何在矩形内水平和垂直居中放置标签


谢谢

您可以引入一个额外的容器-网格-它将正确对齐元素:

<Canvas x:Name="MyCanvas">
    <Grid Width="{Binding ElementName=MyCanvas, Path=ActualWidth}">
        <Rectangle x:Name="TopRect" Fill="Black" Height="120" />

        <Label Content="Welcome to My World" Foreground="#FFFFFF" FontSize="24"
               HorizontalAlignment="Center" 
               VerticalAlignment="Center" />
    </Grid>
</Canvas>

非常感谢。我在画布的另一部分使用这种方法。不知道为什么我不明白在这里做这件事。