У меня есть небольшой элемент управления WPF, в котором TextBlock с TextWrapping установлен на Wrap. Я пытаюсь разместить это в существующем приложении WinForms. У меня ElementHost закреплен в верхней части формы, и я хотел бы изменить высоту ElementHost в зависимости от высоты, необходимой для TextBlock. Есть ли способ добиться этого?
Автоматический размер ElementHost для его содержимого
Ответы (2)
Механизм изменения размера WinForms отличается от механизма WPF.
Вы пробовали установить AutoSize для свойства ElementHost значение true?
person
Emond Erno
schedule
25.02.2011
Это была моя первая мысль, но она ни на что не влияет.
- person Brian Kohrs; 26.02.2011
Вы видели этот пост: stackoverflow.com/questions/1086184/
- person Emond Erno; 26.02.2011
У меня работает установка свойства
AutoSize
для ElementHost
, а также AutoSize
для элемента управления, содержащего ElementHost
, в моем случае Form
.
- person Mike de Klerk; 30.10.2013
@MikedeKlerk Спасибо, это работает как шарм, в моем случае с
ElementHost
, содержащимся в Panel
- person rucamzu; 23.01.2018
Я нашел ответ здесь
это код из ссылки выше:
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);
}
person
oleksa
schedule
19.01.2015