2012-03-29 28 views

Trả lời

12

Theo MSDN (Layout Considerations for the WindowsFormsHost Element)

Một tổ chức Windows Forms điều khiển được rút ra trong một HWND riêng biệt, vì vậy nó là luôn rút ra trên đầu trang của các yếu tố WPF.

Đây là một hạn chế thiết kế

Một bài viết tốt từ MSDN giải thích các vấn đề có thể khi sử dụng công nghệ đồ họa khác nhau trong Windows là Technology Regions Overview

Tuy nhiên googling tôi thấy rằng hình như vẫn có một số hackings cho điều này (được gọi là giới hạn không phận)

Một bản hack (không bao giờ dùng thử cá nhân để không chắc chắn nếu nó hoạt động) là this link

+8

"hack" liên kết 403s – RJFalconer

1

Update, một vài năm sau đó (2016-09):

My sau câu trả lời, như ghi nhận của những nhận xét trên, là không còn giá trị, và đã không có sẵn trong phiên bản cuối cùng của .NET 4.5, hoặc các bản phát hành tiếp theo. Thật không may, liên kết tôi đưa vào vẫn có thông tin đặt hàng z cho HwndHosts hiện tại cho "phiên bản hiện tại" của .NET, điều này có thể dẫn đến một số tin rằng chức năng này thực sự tồn tại. Nó không. Không có công việc xung quanh.

Original câu trả lời:

Một năm sau, mọi thứ đã thay đổi một chút với .NET 4.5. Đối với những người stumbled khi này, nhiều như tôi đã làm, đây là một đoạn trích được cập nhật nhiều hơn từ Walkthrough: Arranging Windows Forms Controls in WPF trên MSDN:

Theo mặc định, các yếu tố WindowsFormsHost có thể nhìn thấy luôn rút ra trên đầu trang của các yếu tố WPF khác, và họ là không bị ảnh hưởng bởi thứ tự z. Để bật đặt hàng z, hãy đặt thuộc tính IsRedirected của WindowsFormsHost thành true và thuộc tính CompositionMode thành Full hoặc OutputOnly.

Tất cả bạn cần làm, khi sử dụng .NET 4.5, là thêm các thuộc tính sau đây để yếu tố WindowsFormsHost bạn IsRedirected="True"CompositionMode="Full"hoặcCompositionMode="OutputOnly".

+24

Đã kiểm tra ngày hôm nay - những thuộc tính này chỉ có trong bản phát hành beta của .net 4.5. unfortunatelly họ did't làm theo cách của họ để phát hành bình thường. –

+3

1.3.10 Windows Presentation Foundation (WPF) 1.3.10.1 Tính năng HwndHost đã bị xóa khỏi WPF trong .NET Framework 4.5 Beta .NET Framework 4.5 Developer Preview bao gồm tính năng chuyển hướng WPF HwndHost. Tuy nhiên, tính năng này có một số vấn đề đã biết và đã bị xóa khỏi .NET Framework 4.5 Beta. Nó sẽ không được bao gồm trong bất kỳ bản phát hành trong tương lai. Để giải quyết vấn đề này: Không có giải pháp thay thế. – lukaszk

+0

Cách sử dụng nó trong .NET 4? Có thể không? – mrhands

0

Tôi vừa gặp phải vấn đề tương tự.

Có một workaround tiềm năng - phụ thuộc vào bản chất của Windows kiểm soát cửa sổ Host và các yếu tố WPF bạn muốn xuất hiện:

tôi bị ràng buộc các các WindowsFormsHost kiểm soát của Visibility đến một tài sản trên mô hình quan điểm của tôi cho phép tôi để ẩn máy chủ (và các điều khiển trên nó) khi tôi muốn hiển thị WPF mà chúng tôi muốn xuất hiện trên nó.

0

Trong trường hợp của tôi, WindowsFormsHost của tôi nằm trong Lưới hai hàng.Hàng dưới cùng có một StackPanel trong nó thay đổi chiều cao tùy thuộc vào những gì nó chứa. Tôi xử lý sự kiện LayoutUpdated của StackPanel để thay đổi kích thước WindowsFormsHost của tôi bằng cách trừ nó là ActualHeight từ ActualHeight của Grid. Hãy chắc chắn sử dụng ActualHeight không Chiều cao.

 void ResizeWinhost() 
    { 
     mainGrid.UpdateLayout(); 
     detailPanel.UpdateLayout(); 
     winHost.Height = mainGrid.ActualHeight - detailPanel.ActualHeight - 5; 
    } 
Các vấn đề liên quan