Prasetyo Jean
Prasetyo Jean

Reputation: 57

custom dialog Mahapps ShowMetroDialogAsync with close button

I create Mahapps custom dialog message with this code. the problem is the dialog form not show close button so cant close it. how to show close button ?

        public async void button_Click(object sender, RoutedEventArgs e)    

  {      Button btn = (Button) sender;
        //dialog.Resources["CustomDialogTest"];
        string[] id =  btn.Name.ToString().Split('_');

        this.MetroDialogOptions.ColorScheme = MetroDialogColorScheme.Accented;
        var dialog = (BaseMetroDialog)this.Resources["CustomDialogTest"];

        var mySettings = new MetroDialogSettings()
        {
            AffirmativeButtonText = "OK",
            AnimateShow = true,
            NegativeButtonText = "Go away!",
            FirstAuxiliaryButtonText = "Cancel",               
        };


         await this.ShowMetroDialogAsync(dialog);
         // this for close the dialog -> await this.HideMetroDialogAsync(dialog);           
    }

Upvotes: 2

Views: 11717

Answers (2)

Akanksha Gaur
Akanksha Gaur

Reputation: 2686

I needed a custom Input Dialog. So I created a CustomInputDialog class inherited from BaseMetroDialog.

I used this code to call the method:

public async Task<string> ShowCustomDialog(string message, string title)
{
    var metroDialogSettings = new MetroDialogSettings()
    {
        AffirmativeButtonText = "OK",
        NegativeButtonText = "CANCEL",
        AnimateHide = true,
        AnimateShow = true,
        ColorScheme = MetroDialogColorScheme.Accented,
    };

    var dialog = new CustomInputDialog(View, metroDialogSettings)
    {
        Message = message,
        Title = title,
        Input = metroDialogSettings.DefaultText
    };

    return await InvokeOnCurrentDispatcher(async () =>
    {
        await View.ShowMetroDialogAsync(dialog, metroDialogSettings);

        await dialog.WaitForButtonPressAsync().ContinueWith((m) =>
        {
            InvokeOnCurrentDispatcher(() => View.HideMetroDialogAsync(dialog));
        });

        return dialog.Input;
    });
}

Message, Title and Input are dependency properties of CustomInputDialog. This is working at my end.

Upvotes: 3

Mangesh
Mangesh

Reputation: 5841

Add close button to your dialog (which is in Resources) & hook up its Click event to close your dialog. For closing, use this.HideMetroDialogAsync(dialog); where this is MetroWindow instance.

Upvotes: 2

Related Questions