- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 .NET 并正在创建一个桌面应用程序/服务,当某些事件被触发时,它会在我桌面的一角显示通知。我不想使用过于干扰的常规消息框 b/c。我希望通知滑入 View ,然后在几秒钟后淡出。我正在考虑一些非常类似于新消息到达时收到的 Outlook 警报的东西。问题是:我应该为此使用 WPF 吗?我从来没有用 WPF 做过任何事情,但如果这是结束的最佳方式,我会很乐意尝试它。有没有一种方法可以使用常规 .NET 库来完成此操作?
最佳答案
WPF 使这一切变得微不足道:它可能需要十分钟或更短的时间。以下是步骤:
仅此而已。
使用 Expression Blend 我花了大约 8 分钟来生成以下工作代码:
<Window
x:Class="NotificationWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Notification Popup" Width="300" SizeToContent="Height"
WindowStyle="None" AllowsTransparency="True" Background="Transparent">
<Grid RenderTransformOrigin="0,1" >
<!-- Notification area -->
<Border BorderThickness="1" Background="Beige" BorderBrush="Black" CornerRadius="10">
<StackPanel Margin="20">
<TextBlock TextWrapping="Wrap" Margin="5">
<Bold>Notification data</Bold><LineBreak /><LineBreak />
Something just happened and you are being notified of it.
</TextBlock>
<CheckBox Content="Checkable" Margin="5 5 0 5" />
<Button Content="Clickable" HorizontalAlignment="Center" />
</StackPanel>
</Border>
<!-- Animation -->
<Grid.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
<SplineDoubleKeyFrame KeyTime="0:0:4" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
<Grid.RenderTransform>
<ScaleTransform ScaleY="1" />
</Grid.RenderTransform>
</Grid>
</Window>
后面有代码:
using System;
using System.Windows;
using System.Windows.Threading;
public partial class NotificationWindow
{
public NotificationWindow()
{
InitializeComponent();
Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(() =>
{
var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice;
var corner = transform.Transform(new Point(workingArea.Right, workingArea.Bottom));
this.Left = corner.X - this.ActualWidth - 100;
this.Top = corner.Y - this.ActualHeight;
}));
}
}
由于 WPF 是常规 .NET 库之一,所以答案是肯定的, 可以使用“常规 .NET 库”实现这一点。
如果您问是否有一种方法可以不使用 WPF 来执行此操作,答案仍然是肯定的,但它非常复杂并且需要 5 天而不是 5 分钟。
关于.net - 使用 .NET 在 Windows 中创建弹出窗口 "toaster"通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3034741/
我将 ngx-toaster 与 disableTimeOut 设置为 true。所以它不会自动隐藏。但是现在我不会在用户离开页面时(在 ngOnDestroy 方法内)以编程方式隐藏它。我该怎么做?
如何在启动另一个 AngularJS-Toaster 之前停止 AngularJS-Toaster,就像我想停止 toaster.pop('wait', "Email verification", '
我正在 angular2 应用程序中使用 angular2 toastr 。在应用程序启动时,我遇到了错误。 我的 app_module 如下: import { NgModule } fr
我正在尝试复制 Gmail 通知程序弹出窗口。 它同时淡入(不透明度)并从开始栏升高。 我已经设法使用计时器和不透明度进行淡入/淡出,但我该怎么做: A) 使表单看起来“弹出”? (我认为它的高度通过
我试图点击页面上的一个元素;该元素在屏幕上清晰可见。有一个 toastr 可能会弹出,所以我试图写一个防御:如果 toastr 在屏幕上,先关闭 toastr ,然后继续点击进入下一页。我正在使用 P
上下文 我在页面中使用dojox/Widget/Toaster,但它的位置位于最 Angular 落(br或tr)。在最 Angular 落,有与 Toaster 背景颜色相同的页眉和页脚。 问题 我
目前,我正在做一个使用 angular2-toaster 的项目。 // Show message notification this.toasterService.pop('success',
我正在尝试为 $exceptionHandler 装饰器中处理的错误 toast ,如下所示, var app = angular.module('myApp',['toaster']); app.c
在我的主 Fragment 中,我实现了 TextToSpeech mainFragment extends Fragment implements TextToSpeech.OnInitListen
我用了Angular-toaster看起来棒极了。搜索堆栈并没有发现: 如何在 Controller 的 toastr 容器中存储打开的 toast 数量? angular.module('main'
如果我的应用程序在 responseError 代码中捕获到 http 错误,我正在使用拦截器显示 toast 消息。我正在使用 AngularJS 拦截器。这是一个 MEAN.JS 应用程序。 拦截
我正在使用这个库 ( https://github.com/CodeSeven/toastr ),我正在尝试将我的 Flash 通知推送到 Toastr 为我提供的 javascript 函数。如何为
我想在 Excel 上创建/使用 toastr 通知。因为我们已经使用 MsgBox 来通知用户发生了某些事情。 但它使脚本停止(暂停)。 你知道怎么做吗?在谷歌上有“系统托盘通知”,但它需要很多代码
我正在使用 .NET 并正在创建一个桌面应用程序/服务,当某些事件被触发时,它会在我桌面的一角显示通知。我不想使用过于干扰的常规消息框 b/c。我希望通知滑入 View ,然后在几秒钟后淡出。我正在考
我正在通过研究 WDK 8.1 学习 Windows 驱动程序开发 Toaster Sample Driver .我可以构建、安装、调试 KMDF 总线和 KMDF 功能驱动程序并与之通信。我遇到的问
我是一名优秀的程序员,十分优秀!