using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace MediaBrowser.UI.Controls { /// /// Interaction logic for ModalWindow.xaml /// public partial class ModalWindow : BaseModalWindow { public MessageBoxResult MessageBoxResult { get; set; } public UIElement TextContent { set { pnlContent.Children.Clear(); var textBlock = value as TextBlock; if (textBlock != null) { textBlock.SetResourceReference(TextBlock.StyleProperty, "ModalTextStyle"); } pnlContent.Children.Add(value); } } public string Text { set { TextContent = new TextBlock { Text = value }; } } private MessageBoxButton _button; public MessageBoxButton Button { get { return _button; } set { _button = value; UpdateButtonVisibility(); OnPropertyChanged("Button"); } } private MessageBoxIcon _messageBoxImage; public MessageBoxIcon MessageBoxImage { get { return _messageBoxImage; } set { _messageBoxImage = value; OnPropertyChanged("MessageBoxImage"); } } private string _caption; public string Caption { get { return _caption; } set { _caption = value; txtCaption.Visibility = string.IsNullOrEmpty(value) ? Visibility.Collapsed : Visibility.Visible; OnPropertyChanged("Caption"); } } public ModalWindow() : base() { InitializeComponent(); } protected override void OnInitialized(EventArgs e) { base.OnInitialized(e); btnOk.Click += btnOk_Click; btnCancel.Click += btnCancel_Click; btnYes.Click += btnYes_Click; btnNo.Click += btnNo_Click; } void btnNo_Click(object sender, RoutedEventArgs e) { MessageBoxResult = MessageBoxResult.No; CloseModal(); } void btnYes_Click(object sender, RoutedEventArgs e) { MessageBoxResult = MessageBoxResult.Yes; CloseModal(); } void btnCancel_Click(object sender, RoutedEventArgs e) { MessageBoxResult = MessageBoxResult.Cancel; CloseModal(); } void btnOk_Click(object sender, RoutedEventArgs e) { MessageBoxResult = MessageBoxResult.OK; CloseModal(); } private void UpdateButtonVisibility() { btnYes.Visibility = Button == MessageBoxButton.YesNo || Button == MessageBoxButton.YesNoCancel ? Visibility.Visible : Visibility.Collapsed; btnNo.Visibility = Button == MessageBoxButton.YesNo || Button == MessageBoxButton.YesNoCancel ? Visibility.Visible : Visibility.Collapsed; btnOk.Visibility = Button == MessageBoxButton.OK || Button == MessageBoxButton.OKCancel ? Visibility.Visible : Visibility.Collapsed; btnCancel.Visibility = Button == MessageBoxButton.OKCancel || Button == MessageBoxButton.YesNoCancel ? Visibility.Visible : Visibility.Collapsed; } } /// /// I had to make my own enum that essentially clones MessageBoxImage /// Some of the options share the same enum int value, and this was preventing databinding from working properly. /// public enum MessageBoxIcon { // Summary: // No icon is displayed. None, // // Summary: // The message box contains a symbol consisting of white X in a circle with // a red background. Error, // // Summary: // The message box contains a symbol consisting of a white X in a circle with // a red background. Hand, // // Summary: // The message box contains a symbol consisting of white X in a circle with // a red background. Stop, // // Summary: // The message box contains a symbol consisting of a question mark in a circle. Question, // // Summary: // The message box contains a symbol consisting of an exclamation point in a // triangle with a yellow background. Exclamation, // // Summary: // The message box contains a symbol consisting of an exclamation point in a // triangle with a yellow background. Warning, // // Summary: // The message box contains a symbol consisting of a lowercase letter i in a // circle. Information, // // Summary: // The message box contains a symbol consisting of a lowercase letter i in a // circle. Asterisk } }