Won*_*ane 12
你的问题有点模糊,因为在WPF中,你的选择实际上只受你想象力的限制.
以下是一些选项:
MessageBox
这是最简单的选项 - 如果您想通过一个他必须确认继续的简单消息通知您的用户,那么只需在MessageBox中显示一条消息.
滚动你自己的对话框
如果MessageBox没有完全这样做,并且你想要显示更多或不同类型的信息,那么你可以简单地创建一个新窗口,并使用ShowDialog()方法打开它,强制用户关闭它(继承之前).
StatusBar
如果您只想传达信息,只需将StatusBar添加到对话框的底部即可.我与SO'er Kent Boogaart的一个很好的例子联系在一起.请注意,您不仅限于StatusBar中的文本 - 您可以向其添加任何UIElement,因此您可以拥有图像,进度条等等.
某些其他面板
除非需要,否则您还可以使用其他面板(使用您的示例,StackPanel或应用程序顶部的某些面板)将Visibility设置为Collapsed.例如,你可以在其中包含一些内容的边框,它显示在对话框中其余的UIElements之前.您可以使用PopUp控件.
如果你采用"额外面板"路线(这可能听起来与你所要求的最相符),那么用动画制作一些技巧来为你的应用添加一点闪光可能会很不错.就像将面板滑动到位,或者设置不透明度等等.如果您将信息放在窗口内容的其余部分上,您还可以使用不透明度来使面板半透明 - 黑暗足以看到和读取,但也允许用户看到它背后的一点窗口.
这是我的意思的一个非常基本的例子.我将把它作为练习留给用户添加任何格式,光滑的动画,处理多个消息等.
<Window ...>
<Grid x:Name="gridMainLayout">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel x:Name="stackNotificationArea"
Grid.Row="0"
Orientation="Horizontal"
Background="LemonChiffon"
Visibility="Collapsed">
<TextBlock x:Name="txtMessage"
Text="{Binding NotificationMessage}" />
<Button x:Name="btnAcknowledge"
Content="Acknowledge" />
</StackPanel>
<!-- Rest of your window goes here -->
<Grid x:Name="gridContent"
Grid.Row="1">
<!-- Content of window -->
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我假设有一个名为NotificationMessage的属性,它返回最新的通知消息.你可以在文本中硬编码,或者其他什么.根据是否有任何通知,最好绑定StackPanel的可见性.无论如何,您必须根据需要将StackPanel切换为Visible.如您所述,将其设置为Visible会自动将窗口内容向下移动.
确认消息时,请务必将"可见性"设置为"折叠".如果将其设置为隐藏,则不会显示StackPanel,但仍会保留不动产(即应用程序顶部会有一个空白区域).
当然,你可以像你需要在这里一样花哨 - 你可以有一个包含所有消息的小列表框,或者几个按钮来滚动消息,或者一个按钮来启动包含所有消息的窗口,或者...... .