The requested page is not available for the requested platform. You are viewing the content for Default platform.

Text Notifications

  • 5 min read

In ASP.NET and WinForms 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 and DevExtreme components and widgets to show the notifications for WinForms and ASP.NET applications.

WinForms Notifications:

You can choose one of the three available notification types listed in the WinMessageType enumeration for a WinForms application:

ASP.NET Notifications:

Notifications are displayed using the DevExtreme dxToast widget.

Using Text Notifications

A "Success" message should show once the platform-independent markCompletedAction updates tasks, as illustrated in the SimpleProjectManager demo (this demo is installed in %PUBLIC%\Documents\DevExpress Demos 19.1\Components\eXpressApp Framework\SimpleProjectManager by default). Also, the task's Detail View should display within a pop-up window invoked on the OK message button click. For this purpose, the ShowMessage method with the MessageOptions parameter is used. The MessageOptions class contains both the platform-agnostic and platform-specific settings of a text notification. The code snippet below demonstrates the example of implementing this approach:

using DevExpress.ExpressApp;
public class ProjectTaskController : ViewController {
    //…
    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(ProjectTask));
        DetailView newTaskDetailView = Application.CreateDetailView(os, os.CreateObject<ProjectTask>());
        Application.ShowViewStrategy.ShowViewInPopupWindow(newTaskDetailView);
     };
     Application.ShowViewStrategy.ShowMessage(options);
}

See the result in the images below.

WinForms application:

ShowMessage_Win

ASP.NET application:

ShowMessage_Web

Important
  • The Toast Notifications Manager requires an application shortcut pinned to the Windows 10 start screen to display Toast notifications correctly. Please refer to the Quickstart: Sending a toast notification from the desktop article to learn more. Once you do this, you need to customize the ToastNotificationsManager instance according to the Toast Notification Manager article. Use the DevExpress.ExpressApp.Win.WinShowViewStrategyBase.CustomizeToastNotificationsManager event to access the instance.
  • In ASP.NET applications, notifications can be shown only on postbacks and callbacks initiated by the XAF RaiseXafCallback method and processed by the XafCallbackManager. 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:

    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);
    

    Alternatively, you can use the WinShowViewStrategyBase class's CustomGetImage 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's CustomGetFlyoutBackColor 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's CustomizeAlertControl 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's CustomizeToastNotificationsManager 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.

Notification_Localization