Skip to content

This control can be used when you want to arrange notification information from top to bottom in the right area of the window.

Control effect

Growl

Basic usage

Step 1: Add a StackPanel to the container of Growl

<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalAlignment="Right">
    <StackPanel dev:Growl.GrowlParent="True" VerticalAlignment="Top" Margin="0,10,10,10"/>
</ScrollViewer>

In order to facilitate scrolling, a ScrollViewer is usually wrapped in the outer layer. At the same time, for the sake of beauty, we set VerticalScrollBarVisibility="Hidden" of ScrollViewer. It is best to add a suitable Margin to StackPanel, which is also for aesthetics.

WARNING

Note the code dev:Growl.GrowlParent="True"

Step 2: Call the relevant interface of Growl to display the specified message.

NOTE

Use case: Growl.Success("File saved successfully!");

Display information notifications in any StackPanel container

Step 1: set a Token to the StackPanel

<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalAlignment="Right">
    <StackPanel dev:Growl.Token="SuccessMsg" dev:Growl.GrowlParent="True" VerticalAlignment="Top" Margin="0,10,10,10"/>
</ScrollViewer>

WARNING

Note the codedev:Growl.Token="SuccessMsg"

Step 2: Use the token: SuccessMsg and call the relevant interface of Growl to display the specified message.

NOTE

Example:Growl.Success("File saved successfully!", "SuccessMsg");

WARNING

Now the "File saved successfully!" message will only be sent to the StackPanel container with the "SuccessMsg" token tag.

Global Usage

you can use growl in desktop Not just the app itself In this case you don't need anything just use Growl.XXXGlobal to display the message

Growl.InfoGlobal("GrowlInfo");
//OR
Growl.SuccessGlobal("GrowlSuccess");
// OR
Growl.WarningGlobal(new GrowlInfo
            {
                Message = "GrowlWarning",
                ActionBeforeClose = isConfirmed =>
                {
                    Growl.InfoGlobal(isConfirmed.ToString());
                    return true;
                }
            });
// OR
Growl.ErrorGlobal("GrowlError");

// And for Clearing growls
Growl.ClearGlobal();

Attributes

PropertyDescription
GrowlPanelCurrently used message container

Additional attribute

NameDescription
TokenUsed to set message tags
GrowlParentfor setting up message containers
GrowlEnterTransition
GrowlExitTransition
RootGridMargin

Method

NameDescription
Info(string title)
Info(string title, string message)
Info(GrowlInfo growlInfo)
InfoWithToken(string title, string token)
InfoWithToken(string title, string message, string token)
InfoGlobal(string title)
InfoGlobal(string title, string message)
InfoGlobal(GrowlInfo growlInfo)
Info2(string title)
Info2(string title, string message)
Info2WithToken(string title, string token)
Info2WithToken(string title, string message, string token)
Info2Global(string title)
Info2Global(string title, string message)
Success(string title)
Success(string title, string message)
Success(GrowlInfo growlInfo)
SuccessWithToken(string title, string token)
SuccessWithToken(string title, string message, string token)
SuccessGlobal(string title)
SuccessGlobal(string title, string message)
SuccessGlobal(GrowlInfo growlInfo)
Warning(string title)
Warning(string title, string message)
Warning(GrowlInfo growlInfo)
WarningWithToken(string title, string token)
WarningWithToken(string title, string message, string token)
WarningGlobal(string title)
WarningGlobal(string title, string message)
WarningGlobal(GrowlInfo growlInfo)
Error(string title)
Error(string title, string message)
Error(GrowlInfo growlInfo)
ErrorWithToken(string title, string token)
ErrorWithToken(string title, string message, string token)
ErrorGlobal(string title)
ErrorGlobal(string title, string message)
ErrorGlobal(GrowlInfo growlInfo)
Ask(string title, Func<object, RoutedEventArgs, bool> actionBeforeClose)
AskWithToken(string title, string token, Func<object, RoutedEventArgs, bool> actionBeforeClose)
AskGlobal(string title, Func<object, RoutedEventArgs, bool> actionBeforeClose)
Clear
ClearGlobal

GrowlInfo

NameDescription
Title
Message
DateTime
ConfirmButtonText
CloseButtonText
Token
Content
Severity
IconSource
IsClosable
ShowCloseButton
ShowConfirmButton
ShowDateTime
StaysOpen
IsIconVisible
UseBlueColorForInfo
WaitTime
ConfirmButtonClicked
CloseButtonClicked

Note

Error and Warning modes are not turned off automatically.

FAQ

NOTE

Ask is special, what?

The main focus of the Ask method is the second parameter, its type is Func<bool, bool>, let's look at the sample code:

Growl.Ask("do you want to update?", (s, e) =>
{
    Growl.Info("test");
    return true;
});

By using the Ask method, the "confirm" and "cancel" buttons are displayed by default. When you click "confirm", the value of isConfirmed in the above code is true, and clicking "cancel" is false", which can be based on isConfirmed The value of takes the corresponding action. Finally, if you returntrue, the Growl notification will be closed, and if false` is returned, it will not be closed.

Demo

you can run demo and see this feature.

Growl

Released under the MIT License.