c#WPF如何产生华而不实的警告
本文关键字:警告 华而不实 何产生 c#WPF | 更新日期: 2023-09-27 18:01:06
我正在学习WPF,请耐心等待。
如果某个事件被触发,我想让我的WPF应用程序在用户面前闪现。
"通知"用户的最佳方式是什么?我真的希望用户做出反应!
干杯,帕特里克
环境:Windows7/64bit/.Net4
如果你想让用户做出反应,你可以通过打开一个模态对话来迫使他们做出反应。其中最轻量级的是MessageBox。您也可以使用它们的ShowDialog
方法创建正常模式窗口,您可以通过去掉它们的正常外观来使这些窗口变得随心所欲。这是通过将WindowStyle
设置为None
,将AllowsTransparency
设置为true
来实现的,这将删除所有帧元素,因此窗口现在是纯内容。
Popups
对于非模态通知很方便,而且它们已经只是内容,但如果您想要圆角,也可能需要将其AllowsTransparency
设置为true。
Best完全是主观的,依赖于许多上下文变量,但以下是我如何做到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!" } );
将在主窗体的顶部弹出一个亮红色的警告框。直到用户按下"解除",它才会消失
如果希望它闪烁、淡入淡出或上下反弹,可以在数据模板中添加动画。
您可以使用转换器或数据通过绑定到AlertsControl.HasItems 来启用/禁用应用程序中的其余控件
祝你好运。