Skip to content

Attributes

Name
Keys
IsInfo
IsError
IsWarning
InfoTitle
InfoToolTip
WarningTitle
WarningToolTip
ErrorTitle
ErrorToolTip
Title
CloseButtonText
PrimaryButtonText
SecondaryButtonText
ContentDialogTitle
KeyNameProvider
UseAutoValidation
KeysMargin

Events

Name
CloseButtonClick
PrimaryButtonClick
SecondaryButtonClick
ValidateShortcut
OpenedContentDialog
ClosedContentDialog
ClosingContentDialog

Methods

Name
UpdatePreviewKeys
CloseContentDialog

Example

xml
<dev:Shortcut x:Name="MainShortcut" PrimaryButtonClick="OnMainShortcutPrimaryButtonClick" SecondaryButtonClick="OnMainShortcutSecondaryButtonClick" CloseButtonClick="OnMainShortcutCloseButtonClick"/>
cs
MainShortcut.Keys = new List<object>() { "Win", "Alt", "F1" };

private void OnMainShortcutPrimaryButtonClick(object sender, ContentDialogButtonClickEventArgs e)
{
    MainShortcut.UpdatePreviewKeys();
    MainShortcut.CloseContentDialog();
    var keys = MainShortcut.Keys.Cast<KeyVisualInfo>().ToList();
    foreach (var item in keys)
    {
        var virtKey = item.Key;
        var keyName = item.KeyName;
    }
}

private void OnMainShortcutSecondaryButtonClick(object sender, ContentDialogButtonClickEventArgs e)
{
    // "Secondary button clicked!";
}

private void OnMainShortcutCloseButtonClick(object sender, ContentDialogButtonClickEventArgs e)
{
    // "Close button clicked!";
}

NOTE

Keys type is List<object>, after selecting keys, you can cast it to KeyVisualInfo and you can access Key Name and Virtual Key.

Customize Keys

you can customize keys string by providing a KeyNameProvider:

cs
shortcut.KeyNameProvider = key =>
{
    return key switch
    {
        VirtualKey.LeftControl => "Left Ctrl",
        VirtualKey.RightControl => "Right Ctrl",
        VirtualKey.LeftShift => "Left Shift",
        VirtualKey.RightShift => "Right Shift",
        // Other Keys...
        _ => key.ToString()
    };
};

Custom Keys Validation

When UseAutoValidation enabled, it automatically handles key combinations and shows warnings or errors based on the keys pressed. (For example, pressing the Windows key alone will trigger an error message. You can customize the error message using ErrorTitle.)

If you want to handle validation yourself, simply disable UseAutoValidation and subscribe to the ValidateShortcut event.

Demo

you can run demo and see this feature.

Shortcut

Released under the MIT License.