diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Implementation/MessageBox.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Implementation/MessageBox.cs
index 50175160..8b9de3df 100644
--- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Implementation/MessageBox.cs
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Implementation/MessageBox.cs
@@ -24,6 +24,11 @@ namespace Microsoft.Windows.Controls
///
private MessageBoxResult _defaultResult = MessageBoxResult.None;
+ ///
+ /// Tracks the owner of the MessageBox
+ ///
+ private Window _owner;
+
#endregion //Private Members
#region Constructors
@@ -150,6 +155,17 @@ namespace Microsoft.Windows.Controls
return Show(messageText, string.Empty, MessageBoxButton.OK);
}
+ ///
+ /// Displays a message box that has a message and that returns a result.
+ ///
+ /// A System.Windows.Window that represents the owner of the MessageBox
+ /// A System.String that specifies the text to display.
+ /// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user.
+ public static MessageBoxResult Show(Window owner, string messageText)
+ {
+ return Show(owner, messageText, string.Empty, MessageBoxButton.OK);
+ }
+
///
/// Displays a message box that has a message and title bar caption; and that returns a result.
///
@@ -161,6 +177,12 @@ namespace Microsoft.Windows.Controls
return Show(messageText, caption, MessageBoxButton.OK);
}
+
+ public static MessageBoxResult Show(Window owner, string messageText, string caption)
+ {
+ return Show(owner, messageText, caption, MessageBoxButton.OK);
+ }
+
///
/// Displays a message box that has a message and that returns a result.
///
@@ -170,7 +192,13 @@ namespace Microsoft.Windows.Controls
/// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user.
public static MessageBoxResult Show(string messageText, string caption, MessageBoxButton button)
{
- return ShowCore(messageText, caption, button, MessageBoxImage.None, MessageBoxResult.None);
+ return ShowCore(null, messageText, caption, button, MessageBoxImage.None, MessageBoxResult.None);
+ }
+
+
+ public static MessageBoxResult Show(Window owner, string messageText, string caption, MessageBoxButton button)
+ {
+ return ShowCore(owner, messageText, caption, button, MessageBoxImage.None, MessageBoxResult.None);
}
///
@@ -183,7 +211,13 @@ namespace Microsoft.Windows.Controls
/// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user.
public static MessageBoxResult Show(string messageText, string caption, MessageBoxButton button, MessageBoxImage icon)
{
- return ShowCore(messageText, caption, button, icon, MessageBoxResult.None);
+ return ShowCore(null, messageText, caption, button, icon, MessageBoxResult.None);
+ }
+
+
+ public static MessageBoxResult Show(Window owner, string messageText, string caption, MessageBoxButton button, MessageBoxImage icon)
+ {
+ return ShowCore(owner, messageText, caption, button, icon, MessageBoxResult.None);
}
///
@@ -197,7 +231,13 @@ namespace Microsoft.Windows.Controls
/// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user.
public static MessageBoxResult Show(string messageText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
{
- return ShowCore(messageText, caption, button, icon, defaultResult);
+ return ShowCore(null, messageText, caption, button, icon, defaultResult);
+ }
+
+
+ public static MessageBoxResult Show(Window owner, string messageText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
+ {
+ return ShowCore(owner, messageText, caption, button, icon, defaultResult);
}
#endregion //Public Static
@@ -219,12 +259,13 @@ namespace Microsoft.Windows.Controls
/// The caption.
/// The button.
/// The image.
- protected void InitializeMessageBox(string text, string caption, MessageBoxButton button, MessageBoxImage image, MessageBoxResult defaultResult)
+ protected void InitializeMessageBox(Window owner, string text, string caption, MessageBoxButton button, MessageBoxImage image, MessageBoxResult defaultResult)
{
Text = text;
Caption = caption;
_button = button;
_defaultResult = defaultResult;
+ _owner = owner;
SetImageSource(image);
Container = CreateContainer();
}
@@ -326,10 +367,10 @@ namespace Microsoft.Windows.Controls
/// The icon.
/// The default result.
///
- private static MessageBoxResult ShowCore(string messageText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
+ private static MessageBoxResult ShowCore(Window owner, string messageText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
{
MessageBox msgBox = new MessageBox();
- msgBox.InitializeMessageBox(messageText, caption, button, icon, defaultResult);
+ msgBox.InitializeMessageBox(owner, messageText, caption, button, icon, defaultResult);
msgBox.Show();
return msgBox.MessageBoxResult;
}
@@ -337,10 +378,10 @@ namespace Microsoft.Windows.Controls
///
/// Resolves the owner Window of the MessageBox.
///
- /// the owner element
- private static FrameworkElement ResolveOwner()
+ /// the owner Window
+ private static Window ResolveOwnerWindow()
{
- FrameworkElement owner = null;
+ Window owner = null;
if (Application.Current != null)
{
foreach (Window w in Application.Current.Windows)
@@ -405,13 +446,10 @@ namespace Microsoft.Windows.Controls
newWindow.AllowsTransparency = true;
newWindow.Background = Brushes.Transparent;
newWindow.Content = this;
-
- var owner = ResolveOwner();
- if (owner != null)
- {
- newWindow.Owner = Window.GetWindow(owner);
+ newWindow.Owner = _owner ?? ResolveOwnerWindow();
+
+ if (newWindow.Owner != null)
newWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
- }
else
newWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;