Resize ElementHost to size of the hosted XAML UserControl

后端 未结 2 859
攒了一身酷
攒了一身酷 2021-02-11 06:01

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

相关标签:
2条回答
  • 2021-02-11 07:01

    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:

    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.

    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.

    0 讨论(0)
  • 2021-02-11 07:05

    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.

    0 讨论(0)
提交回复
热议问题