c# - WPFToastNotification 点击事件
问题描述
我正在开发一个 Windows 应用程序,因为我需要显示通知,并且当用户单击该通知时,它应该根据参数导航到该页面。
目前,通知正在显示。我正在使用 WPFNotification Nuget 包来实现这一点。这是我加载通知的代码:
INotificationDialogService _dailogService = new NotificationDialogService();
var newNotification = new Notification()
{
Title = "New Message from ",
Message = "123",
ImgURL = "/icon.png",
};
var notificationConfiguration = new NotificationConfiguration(
TimeSpan.FromSeconds(3),
1000,
500,
"Notification",
NotificationFlowDirection.RightBottom
);
_dailogService.ShowNotificationWindow(newNotification);
它是显示通知的方法。现在,我需要为该通知设置一个点击事件。我怎样才能做到这一点?
解决方案
要获得点击事件,您需要访问弹出的窗口。不幸的是,查看公共源代码显示创建的窗口是私有的。
但是可以WPFNotification.Core.NotifyBox.Show
通过定义自己的自定义窗口来使用公共功能。您可以在代码中使用默认实现,并使用点击事件订阅来扩展它,例如:
public static void Show(object content, NotificationConfiguration configuration)
{
DataTemplate notificationTemplate = (DataTemplate)Application.Current.Resources[configuration.TemplateName];
Window window = new Window()
{
Title = "",
Width = configuration.Width.Value,
Height = configuration.Height.Value,
Content = content,
ShowActivated = false,
AllowsTransparency = true,
WindowStyle = WindowStyle.None,
ShowInTaskbar = false,
Topmost = true,
Background = Brushes.Transparent,
UseLayoutRounding = true,
ContentTemplate = notificationTemplate
};
//Subscribe to clicks
window.PreviewMouseDown += NotificationWindow_PreviewMouseDoubleClick;
WPFNotification.Core.NotifyBox.Show(
window, configuration.DisplayDuration, configuration.NotificationFlowDirection);
}
private static void NotificationWindow_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
System.Diagnostics.Debug.WriteLine("Clicked!!!");
}
现在您可以显示通知,例如
Show(newNotification, notificationConfiguration);
请注意,您需要添加模板资源,如入门中所述,以显示默认样式的弹出窗口。
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/WPFNotification;component/Assets/NotificationUI.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
如果"Notification"
您指定的模板不可用,请使用默认模板NotificationConfiguration.DefaultConfiguration.TemplateName
。
推荐阅读
- angular - Angular 5如何使用type = file从输入中获取文件名
- c# - 网页完全加载后如何打开其他表单c#
- xml - 使用罗马尼亚语字符集将 XML 数据导入 SQL Server
- firebase - Flutter ListView 跳转到顶部
- python - 使用 Python 更新 XML 值
- python - 如何替换Python中的函数?
- wso2 - 在本地服务器上安装 WSO 2 以替换 Mule ESB
- docker - rsync 无法识别 Windows 路径
- php - 错误 403 访问被拒绝 - EspoCRM 导入
- c# - 从字符串中提取日期时间并检查值