Text Notifications
- 5 minutes to read
In XAF applications, you can display a message box with a detailed notification text using the ShowViewStrategyBase.ShowMessage method.
DevExpress Components and Widgets Used to Show Notifications
XAF uses the DevExpress WinForms, DevExtreme, and ASP.NET Core Blazor components and widgets to show the notifications for WinForms, ASP.NET Web Forms, and ASP.NET Core Blazor applications.
ASP.NET Core Blazor Notifications
Blazor applications support the following notification API:
- MessageOptions.CancelDelegate
- MessageOptions.Duration
- MessageOptions.Message
- MessageOptions.OkDelegate
- MessageOptions.Type
- WebMessageOptions.OkButtonText
- WebMessageOptions.CssClass
- WebMessageOptions.ShowCloseButton
Windows Forms Notifications
You can choose one of the three available notification types listed in the WinMessageType enumeration for a WinForms application:
- Alert
- The notification is displayed using the Alert Window.
- Toast
- The notification window is displayed using the Toast Notification Manager. Used only in Windows 8 or later.
- Flyout
- The notification window is displayed using the Flyout Dialog.
ASP.NET Web Forms Notifications
Notifications are displayed using the DevExtreme dxToast widget.
Using Text Notifications
To display a “Success” message when a user clicks the platform-independent Mark Completed Action, use the ShowMessage(MessageOptions) method. The MessageOptions class contains both the platform-agnostic and platform-specific settings of a text notification.
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using YourSolutionName.Module.BusinessObjects;
namespace YourSolutionName.Module.Controllers {
public class DemoTaskController : ViewController {
public DemoTaskController() {
TargetObjectType = typeof(DemoTask);
TargetViewType = ViewType.Any;
SimpleAction markCompletedAction = new SimpleAction(
this, "MarkCompleted",
DevExpress.Persistent.Base.PredefinedCategory.RecordEdit) {
TargetObjectsCriteria =
(CriteriaOperator.Parse("Status != ?", MySolution.Module.BusinessObjects.TaskStatus.Completed)).ToString(),
ConfirmationMessage =
"Are you sure you want to mark the selected task(s) as 'Completed'?",
ImageName = "State_Task_Completed"
};
markCompletedAction.SelectionDependencyType = SelectionDependencyType.RequireMultipleObjects;
markCompletedAction.Execute += (s, e) => {
foreach (DemoTask task in e.SelectedObjects) {
task.DueDate = DateTime.Now;
task.Status = MySolution.Module.BusinessObjects.TaskStatus.Completed;
View.ObjectSpace.SetModified(task);
}
View.ObjectSpace.CommitChanges();
View.ObjectSpace.Refresh();
MessageOptions options = new MessageOptions();
options.Duration = 2000;
options.Message = string.Format("{0} task(s) have been successfully updated!", e.SelectedObjects.Count);
options.Type = InformationType.Success;
options.Web.Position = InformationPosition.Right;
options.Win.Caption = "Success";
options.Win.Type = WinMessageType.Toast;
options.OkDelegate = () => {
IObjectSpace os = Application.CreateObjectSpace(typeof(DemoTask));
DetailView newTaskDetailView = Application.CreateDetailView(os, os.CreateObject<DemoTask>());
Application.ShowViewStrategy.ShowViewInPopupWindow(newTaskDetailView);
};
Application.ShowViewStrategy.ShowMessage(options);
};
}
}
}
- ASP.NET Core Blazor
- Windows Forms
- ASP.NET Web Forms
Important
- In Windows Forms applications, the Toast Notifications Manager requires an application shortcut pinned to the Windows 10 start screen to display Toast notifications correctly. Once you do this, you need to customize the ToastNotificationsManager instance as described in the following topic: Toast Notification Manager. Use the CustomizeToastNotificationsManager event to access the instance.
- In ASP.NET Web Forms applications, notifications can be shown only on postbacks and callbacks initiated by the XAF’s
RaiseXafCallback
method and processed byXafCallbackManager
. This does not work on callbacks initiated by a control, such as a grid sorting callback.
Notifications Customization
Use the WinMessageOptions.ImageOptions property to change the default image of the WinForms notifications the Toast or Alert control displays:
For the .NET Framework projects:
using System.Drawing; using DevExpress.ExpressApp; using DevExpress.Utils.Svg; //... MessageOptions options = new MessageOptions(); //options.Win.ImageOptions.Image = Image.FromFile(@"D:\Images\success.png"); // or options.Win.ImageOptions.SvgImage = SvgImage.FromFile(@"D:\Images\Success.svg"); options.Win.ImageOptions.SvgImageSize = new Size(50, 50); Application.ShowViewStrategy.ShowMessage(options);
For .NET projects:
using System.Drawing; using DevExpress.ExpressApp; using DevExpress.Utils; using DevExpress.Utils.Svg; //... MessageOptions options = new MessageOptions(); ImageOptions imageOptions = new ImageOptions(); //imageOptions.Image = Image.FromFile(@"D:\Images\success.png"); // or imageOptions.SvgImage = SvgImage.FromFile(@"D:\Images\success.svg"); imageOptions.SvgImageSize = new Size(50, 50); options.Win.ImageOptions = imageOptions; Application.ShowViewStrategy.ShowMessage(options);
Alternatively, you can use the
WinShowViewStrategyBase
class’sCustomGetImage
event as shown below:using System.Drawing; using DevExpress.ExpressApp.Win; //... ((WinShowViewStrategyBase)Application.ShowViewStrategy).CustomGetImage += ShowMessagesController_CustomGetImage; //... void ShowMessagesController_CustomGetImage(object sender, CustomGetImageEventArgs e) { e.Image = new Bitmap(32, 32); //... }
Use the
WinShowViewStrategyBase
class’sCustomGetFlyoutBackColor
event to change the Flyout Dialog‘s color:using System.Drawing; using DevExpress.ExpressApp.Win; //... ((WinShowViewStrategyBase)Application.ShowViewStrategy).CustomGetFlyoutBackColor += ShowMessagesController_CustomGetFlyoutBackColor; //... void ShowMessagesController_CustomGetFlyoutBackColor(object sender, CustomGetFlyoutBackColorEventArgs e) { if(e.InformationType == InformationType.Error) { e.BackColor = Color.Red; } }
Use the
WinShowViewStrategyBase
class’sCustomizeAlertControl
event to customize the Alert control:using DevExpress.ExpressApp.Utils; using DevExpress.ExpressApp.Win; using DevExpress.XtraBars.Alerter; //... ((WinShowViewStrategyBase)Application.ShowViewStrategy).CustomizeAlertControl += ShowMessagesController_CustomizeAlertControl; //... void ShowMessagesController_CustomizeAlertControl(object sender, CustomizeAlertControlEventArgs e) { AlertButton button = new AlertButton(ImageLoader.Instance.GetImageInfo("BO_Attention").Image); button.Name = "buttonAlert"; e.AlertControl.Buttons.Add(button); //... }
Use the
WinShowViewStrategyBase
class’sCustomizeToastNotificationsManager
to access the Toast Notification Manager instance:using DevExpress.ExpressApp.Win; //... ((WinShowViewStrategyBase)Application.ShowViewStrategy).CustomizeToastNotificationsManager += ShowMessagesController_CustomizeToastNotificationsManager; //... void ShowMessagesController_CustomizeToastNotificationsManager(object sender, CustomizeToastNotificationsManagerEventArgs e) { e.ToastNotificationsManager.UserCancelled += ToastNotificationsManager_UserCancelled; } void ToastNotificationsManager_UserCancelled(object sender, DevExpress.XtraBars.ToastNotifications.ToastNotificationEventArgs e) { //... }
Notification Button Caption Localization
You can localize the notification button captions using the Model Editor. Navigate to the Localization | DialogButtons node, choose the OK or Cancel node and set a particular string to the Value property. Note that this setting also applies to other dialog buttons.