How can I allow selecting and copying of text from MessageBox in WPF?
If you don't need selecting text as a requirement, just use System.Windows.Forms.MessageBox. It maps to the system-default one which already allows copying its contents with Ctrl+C.
You can just use Ctrl+C while the message box has focus, but it will give you a lot more text than just the error message.
e.g.
MessageBox.Show("Message", "Message Title", MessageBoxButton.OK);
Would copy and paste as:
---------------------------
Message Title
---------------------------
Message
---------------------------
OK
---------------------------
If you're displaying the messagebox...
System.Windows.Forms.Clipboard.SetDataObject(messageToShowInMsgBoxString, true);
will copy the item to the clipboard.
string msgtext = "message text";
if (MessageBox.Show(msgtext, "bla bla bla. (OK to copy)", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
{ Clipboard.SetText(msgtext); }
It works pretty good.
The best approach would be to use a Window with a selectable text control, like a textbox for example. I can say from experience that this is the easiest way, and will not take much time or code changes to implement.