简体   繁体   中英

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

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM