2011-10-19 40 views

Trả lời

6

Cân nhắc chuyển tham số sang phương thức ShowDialog thay vì sử dụng thuộc tính Parent.

Bạn có thể viết lớp helper

class Wpf32Window : IWin32Window 
{ 
    public IntPtr Handle { get; private set; } 

    public Wpf32Window(Window wpfWindow) 
    { 
    Handle = new WindowInteropHelper(wpfWindow).Handle; 
    } 
} 

public static class WindowExtensions 
{ 
    public static IWin32Window GetWin32Window (this Window parent) 
    { 
    return new Wpf32Window(parent); 
    } 
} 

Sau đó bạn chỉ có thể viết

winFormsWindow.Show(yourWpfWindow.GetWin32Window()); 
+0

Lệnh 'tài sản của đối tượng được tạo Handle' là null. Bạn có biết tại sao? –

+0

Cửa sổ wpf của bạn đã được tạo chưa? Hãy thử sử dụng mã này khi cửa sổ đã được tải. Tôi không có vấn đề này trong trường hợp của tôi. Có lẽ bài viết này sẽ hữu ích http://social.msdn.microsoft.com/Forums/ar/wpf/thread/5f89ac58-d2ef-4ac0-aefb-b2826dbef48a – nevermind

+0

Điều này dường như không hoạt động đúng - 'Wpf32Window' mới không bao giờ được phát hành, và ngay cả sau khi chương trình kết thúc, quá trình ban đầu vẫn còn bởi vì cửa sổ mới chưa bao giờ được xử lý đúng cách. – Conrad

2

Đặt WindowsFormsHost trên cửa sổ WPF của bạn, có chứa một cửa sổ tạo thành điều khiển người dùng làm phụ huynh cho hộp thoại của bạn.

Các vấn đề liên quan