我正在学习WPF,所以请耐心等待。
如果某个事件被触发,我想让我的WPF应用程序在用户面前闪现。
“通知”用户的最佳方式是什么?我真的希望用户做出反应!
干杯,帕特里克
环境:Windows7 / 64bit / .Net4
答案 0 :(得分:2)
如果您希望用户做出反应,您可以通过简单地打开模式对话来强制它们。最轻量级的是MessageBox。你也可以使用他们的ShowDialog
方法创建普通的模态窗口,你可以通过摆脱它们的正常外观使这些窗口像你想要的那样“花哨”。这是通过将WindowStyle
设置为None
和AllowsTransparency
设置为true
来实现的,这将删除所有框架元素,因此窗口现在是纯内容。
Popups
非常适用于非模态通知,并且它们已经只是内容,但如果您想要圆角,也可能需要将AllowsTransparency
设置为true。
答案 1 :(得分:0)
最好是完全主观的,取决于许多上下文变量,但这就是我如何做MVVM风格。
在主视图模型中,定义属性
pubic ObservableCollection<AlertViewModel"> Alerts { get; private set; }
在我的情况下,AlertViewModel只有一个“Message”属性和一个“Dismiss”RelayCommand。
在主视图的XAML中添加
<Grid>
<all of my other other view controls>
<ItemsControl x:Name="AlertsControl" Opacity="50" ItemsSource="{Binding Alerts}"/>
</Grid>
确保它是主视图主容器中的最后一项。这可确保它具有最高的z顺序,并将显示在所有其他控件之上。
以下是此视图模型的数据模板
<DataTemplate DataType="{x:Type vm:AlertViewModel}">
<Border CornerRadius="10" Margin="3" Background="Red">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Margin="10" Grid.Column="0"
Command="{Binding ElementName=theWindow, Path=DataContext.DismissAlarmCommand}"
CommandParameter="{Binding}">Dismiss</Button>
<TextBlock Foreground="White" FontWeight="ExtraBold" Grid.Column="1"
Text="{Binding Message}" FontSize="20"
VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
</Grid>
</Border>
</DataTemplate>
现在,
Alerts.Add( new AlertViewModel() { Message = "Danger Will Robinson! Danger!" } );
将明亮的红色警告框弹出到主表单的顶部。在用户按下“Dismiss”
之前,它不会消失如果您希望它可以闪烁或淡入淡出或上下弹跳,您可以在数据模板中添加动画。
您可以使用转换器或数据通过绑定到AlertsControl.HasItems来启用/禁用应用程序中的其余控件
祝你好运。