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 未居中。而且我不知道为什么,也许我遗漏了什么,但对我来说一切看起来都很好。
您可以像这样手动订阅 Popup
的 SizeChanged
-
Popup.SizeChanged += (s,e) => PopupGrid.Width = Popup.ActualWidth;
更新
我通常会创建一个 UserControl
弹出窗口来显示 MessageText
属性 以便我可以传入动态文本,以及另一个 IsOpen
标志来切换其可见性。我还禁用它进行命中测试,并允许它在几秒钟后自行关闭。
隐藏和显示应该通过封装在控件中的 Storyboard
s 来完成。
最后这个MessageControl
应该是这样的-
<local:MessageControl IsOpened="{x:Bind MyToggle.IsOn, Mode=OneWay}" Message="Die Änderung wurde übernommen!" />
我已经包含了一个示例项目 here 供您参考,这就是它的样子 -
我的 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
的 SizeChanged
-
Popup.SizeChanged += (s,e) => PopupGrid.Width = Popup.ActualWidth;
更新
我通常会创建一个 UserControl
弹出窗口来显示 MessageText
属性 以便我可以传入动态文本,以及另一个 IsOpen
标志来切换其可见性。我还禁用它进行命中测试,并允许它在几秒钟后自行关闭。
隐藏和显示应该通过封装在控件中的 Storyboard
s 来完成。
最后这个MessageControl
应该是这样的-
<local:MessageControl IsOpened="{x:Bind MyToggle.IsOn, Mode=OneWay}" Message="Die Änderung wurde übernommen!" />
我已经包含了一个示例项目 here 供您参考,这就是它的样子 -