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