Example #1
0
        public MetroMessage(string message, MessageBoxButton button, MessageBoxImage icon = MessageBoxImage.Information)
        {
            InitializeComponent();

            DataContext = this;

            OKVisibility     = new Observable <Visibility>(Visibility.Collapsed);
            CancelVisibility = new Observable <Visibility>(Visibility.Collapsed);
            YesVisibility    = new Observable <Visibility>(Visibility.Collapsed);
            NoVisibility     = new Observable <Visibility>(Visibility.Collapsed);

            QuestionVisibility    = new Observable <Visibility>(Visibility.Collapsed);
            InformationVisibility = new Observable <Visibility>(Visibility.Collapsed);
            ErrorVisibility       = new Observable <Visibility>(Visibility.Collapsed);
            WarningVisibility     = new Observable <Visibility>(Visibility.Collapsed);

            OKCommand     = new RxCommand();
            CancelCommand = new RxCommand();
            YesCommand    = new RxCommand();
            NoCommand     = new RxCommand();

            Result  = new Observable <MessageBoxResult>();
            Caption = new Observable <string>(MVVMConfiguration.Configuration.MessageBoxTitle);
            Message = new Observable <string>(message);

            OKCommand.Subscribe(x =>
            {
                Result.Value = MessageBoxResult.OK;
                DialogResult = true;
            });

            CancelCommand.Subscribe(x =>
            {
                Result.Value = MessageBoxResult.Cancel;
                DialogResult = true;
            });

            YesCommand.Subscribe(x =>
            {
                Result.Value = MessageBoxResult.Yes;
                DialogResult = true;
            });

            NoCommand.Subscribe(x =>
            {
                Result.Value = MessageBoxResult.No;
                DialogResult = true;
            });



            switch (button)
            {
            case MessageBoxButton.OK:
                OKVisibility.Value     = Visibility.Visible;
                CancelVisibility.Value = Visibility.Collapsed;
                YesVisibility.Value    = Visibility.Collapsed;
                NoVisibility.Value     = Visibility.Collapsed;
                break;

            case MessageBoxButton.OKCancel:
                OKVisibility.Value     = Visibility.Visible;
                CancelVisibility.Value = Visibility.Visible;
                YesVisibility.Value    = Visibility.Collapsed;
                NoVisibility.Value     = Visibility.Collapsed;
                break;

            case MessageBoxButton.YesNoCancel:
                OKVisibility.Value     = Visibility.Collapsed;
                CancelVisibility.Value = Visibility.Visible;
                YesVisibility.Value    = Visibility.Visible;
                NoVisibility.Value     = Visibility.Visible;
                break;

            case MessageBoxButton.YesNo:
                OKVisibility.Value     = Visibility.Collapsed;
                CancelVisibility.Value = Visibility.Collapsed;
                YesVisibility.Value    = Visibility.Visible;
                NoVisibility.Value     = Visibility.Visible;
                break;

            default:
                break;
            }

            switch (icon)
            {
            case MessageBoxImage.Error:
                QuestionVisibility.Value    = Visibility.Collapsed;
                InformationVisibility.Value = Visibility.Collapsed;
                ErrorVisibility.Value       = Visibility.Visible;
                WarningVisibility.Value     = Visibility.Collapsed;
                break;

            case MessageBoxImage.Question:
                QuestionVisibility.Value    = Visibility.Visible;
                InformationVisibility.Value = Visibility.Collapsed;
                ErrorVisibility.Value       = Visibility.Collapsed;
                WarningVisibility.Value     = Visibility.Collapsed;
                break;

            case MessageBoxImage.Warning:
                QuestionVisibility.Value    = Visibility.Collapsed;
                InformationVisibility.Value = Visibility.Collapsed;
                ErrorVisibility.Value       = Visibility.Collapsed;
                WarningVisibility.Value     = Visibility.Visible;
                break;

            case MessageBoxImage.Information:
                QuestionVisibility.Value    = Visibility.Collapsed;
                InformationVisibility.Value = Visibility.Visible;
                ErrorVisibility.Value       = Visibility.Collapsed;
                WarningVisibility.Value     = Visibility.Collapsed;
                break;

            case MessageBoxImage.None:
            default:
                QuestionVisibility.Value    = Visibility.Collapsed;
                InformationVisibility.Value = Visibility.Collapsed;
                ErrorVisibility.Value       = Visibility.Collapsed;
                WarningVisibility.Value     = Visibility.Collapsed;
                break;
            }
        }