Вопрос по c#, wpf, xaml – Изменение размера ElementHost до размера размещенного пользовательского элемента управления XAML

2

Я хотел бы расширить панель в моем приложении Windows Forms. Я хотел посмотреть, возможно ли это с помощью элемента управления WPF Expander. Я создал Xaml UserControl, где я унаследовал от Expander, а не UserControl. У меня есть триггер на Expander для настройки его размера.

Можно ли изменить высоту ElementHost, чтобы отразить изменение размера ребенка? Или мне лучше создать расширяющуюся панель в Windows Forms?

Я использую C # .Net 3.5.

ура

Ваш Ответ

2   ответа
0

Есть ли какая-то конкретная причина, по которой выinheriting от Expander против всегоusing расширитель в вашем интерфейсе?

Если вы настроите свойства выравнивания H / V в Expander, вы сможете получить большинство стандартных вариантов размеров без использования триггеров размера. Исходя из моего опыта, контентная часть Expander автоматически подгоняется под размеры.

Если вы пытаетесь полностью удалить часть заголовка, вы можете создать собственный шаблон ControlTemplate для Expander.

0

Да. Вы должны переопределитьMeasureOverride в вашем внешнем элементе управления WPF преобразуйте размер из координат WPF в координаты устройства и обновитеElementHost.Size.

Так как вы уже подклассыExpander:

  1. Override the MeasureOverride method
  2. After the measurement is calculated, use PresentationSource.From(visual).CompositionTarget.TransformToDevice.Transform(point) to get the device coordinates
  3. Update ElementHost.Size.

ВашExpander Экземпляр подкласса будет нуждаться в указателеElementHost сделать это.

Более общим решением было бы создание нового класса для обработки синхронизации. Было бы подклассFrameworkElement и быть прямым ребенкомElementHost.

У вас есть пример кода?

Похожие вопросы