2011-02-25 43 views
7

Tôi có một điều khiển WPF nhỏ có một TextBlock với TextWrapping thiết lập để Wrap. Tôi đang cố gắng để lưu trữ này trong một ứng dụng WinForms hiện có. Tôi có ElementHost được gắn vào đầu biểu mẫu và tôi muốn kích thước chiều cao của ElementHost dựa trên chiều cao mà TextBlock yêu cầu. Có cách nào để thực hiện điều này?Kích thước tự động ElementHost với nội dung của nó

Trả lời

5

Cơ chế thay đổi kích thước của WinForms khác với cơ chế WPF.

Bạn đã thử đặt thuộc tính AutoSize của ElementHost thành true?

+0

Đó là suy nghĩ đầu tiên của tôi, nhưng nó không làm gì cả. –

+0

Bạn đã xem bài đăng này chưa: http://stackoverflow.com/questions/1086184/resize-elementhost-to-size-of-the-hosted-xmal-usercontrol –

+3

Đặt thuộc tính 'AutoSize' cho' ElementHost 'cũng như' AutoSize' cho điều khiển chứa 'ElementHost', trong trường hợp của tôi là' Form', hoạt động cho tôi. –

0

Tôi tìm thấy câu trả lời here

đây là mã từ liên kết ở trên:

public System.Windows.Size GetElementPixelSize(UIElement element) 
{ 
    Matrix transformToDevice; 
    var source = PresentationSource.FromVisual(element); 
    if (source != null) 
     transformToDevice = source.CompositionTarget.TransformToDevice; 
    else  
     using (var Hwndsource = new HwndSource(new HwndSourceParameters())) 
      transformToDevice = Hwndsource.CompositionTarget.TransformToDevice; 


    if (element.DesiredSize == new System.Windows.Size()) 
     element.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity)); 

    return (System.Windows.Size)transformToDevice.Transform((Vector)element.DesiredSize); 
} 
Các vấn đề liên quan