c#WPF如何产生华而不实的警告

时间:2011-07-03 22:46:27

标签: c# wpf xaml

我正在学习WPF,所以请耐心等待。

如果某个事件被触发,我想让我的WPF应用程序在用户面前闪现。

“通知”用户的最佳方式是什么?我真的希望用户做出反应!

干杯,帕特里克

环境:Windows7 / 64bit / .Net4

2 个答案:

答案 0 :(得分:2)

如果您希望用户做出反应,您可以通过简单地打开模式对话来强制它们。最轻量级的是MessageBox。你也可以使用他们的ShowDialog方法创建普通的模态窗口,你可以通过摆脱它们的正常外观使这些窗口像你想要的那样“花哨”。这是通过将WindowStyle设置为NoneAllowsTransparency设置为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来启用/禁用应用程序中的其余控件

祝你好运。