Pour obtenir une boîte de dialogue WPF à positionner au centre d'un formulaire parent Windows Forms, j'ai transmis le formulaire parent à la boîte de dialogue depuis Application.Current n'a pas renvoyé le parent Windows Form (je suppose que cela ne fonctionne que si l'application parent est WPF).
public partial class DialogView : Window
{
private readonly System.Windows.Forms.Form _parent;
public DialogView(System.Windows.Forms.Form parent)
{
InitializeComponent();
_parent = parent;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Left = _parent.Left + (_parent.Width - this.ActualWidth) / 2;
this.Top = _parent.Top + (_parent.Height - this.ActualHeight) / 2;
}
}
définissez WindowStartupLocation dans la boîte de dialogue WPF:
<Window WindowStartupLocation="CenterParent">
et la façon dont le Windows Form charge la boîte de dialogue WPF est la suivante:
DialogView dlg = new DialogView();
dlg.Owner = this;
if (dlg.ShowDialog() == true)
{
...