WPFではこれで問題ありません。Window ownerパラメータを MessageBox.Show 呼び出しに指定するだけです。所有するメッセージ ボックスは、その性質上モーダルです。たとえば、次のオーバーロードされたバージョンの Show を使用して、メッセージ ボックスをカスタマイズします。
public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);
これは非常に単純です(確かに機能します:))例:
MainWindow.xaml:
<Window x:Class="WpfApplication2_ModalMessageBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button VerticalAlignment="Center" HorizontalAlignment="Center"
Click="Button_Click">Modal</Button>
</Grid>
</Window>
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(this, "Text", "Caption", MessageBoxButton.OK, MessageBoxImage.Information);
}
}