XAML 文本块不能居中

XAML Textblock cannot be centered

我的 XAML 中有一个 PopUp 元素,里面有一个带有 TextBlock 的 Grid。

现在的问题是,文本和网格无法通过水平和垂直对齐居中...

XAML:

<Popup x:Name="Popup" Height="30px" VerticalAlignment="Top">
      <Grid Height="30px" 
            Background="Green" 
            Width="{Binding ActualWidth, ElementName=Popup}">
            <TextBlock VerticalAlignment="Center" 
                       HorizontalAlignment="Center" 
                       Foreground="White" 
                       Text="Änderungen wurden übernommen">
            </TextBlock>
      </Grid>
</Popup>

在 Visual Studio 中预览(看起来和我想做的一模一样): 实际结果: 如您所见,绿色 PopUp 内的 TextBox 未居中。而且我不知道为什么,也许我遗漏了什么,但对我来说一切看起来都很好。

您可以像这样手动订阅 PopupSizeChanged -

Popup.SizeChanged += (s,e) => PopupGrid.Width = Popup.ActualWidth;

更新

我通常会创建一个 UserControl 弹出窗口来显示 MessageText 属性 以便我可以传入动态文本,以及另一个 IsOpen 标志来切换其可见性。我还禁用它进行命中测试,并允许它在几秒钟后自行关闭。

隐藏和显示应该通过封装在控件中的 Storyboards 来完成。

最后这个MessageControl应该是这样的-

<local:MessageControl IsOpened="{x:Bind MyToggle.IsOn, Mode=OneWay}" Message="Die Änderung wurde übernommen!" />

我已经包含了一个示例项目 here 供您参考,这就是它的样子 -