I would like an expanding panel in my Windows Forms app. I was having a look to see if this would be possible using the WPF Expander control. I\'ve created a Xaml UserControl wh
Yes. You need to override MeasureOverride
in your outermost WPF control, convert the size from WPF coordinates to device coordinates, and update ElementHost.Size
.
Since you are already subclassing Expander
:
MeasureOverride
methodPresentationSource.From(visual).CompositionTarget.TransformToDevice.Transform(point)
to get the device coordinatesElementHost.Size
.Your Expander
subclass instance will need a pointer to ElementHost
to do this.
A more general solution would be to create a new class to handle the synchronization. It would subclass FrameworkElement
and be the direct child of ElementHost
.
Is there any particular reason you are inheriting from Expander vs. just using an Expander in your UI?
If you set up the H/V Alignment properties of the Expander, you should be able to get most standard sizing behaviors without having size triggers. From my experience, the content portion of the Expander automatically sizes to fit.
If you're trying to completely remove the header part, then you might look at making your own ControlTemplate for the Expander.