Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer And Can not add Wpf UserControl in winform designer #9443

Open
MauNguyenVan opened this issue Jul 8, 2023 · 22 comments
Assignees
Labels
area-VSDesigner Windows Forms out-of-proc designer related issues blocking-migration An issue that is preventing the developer from migrating from .NET Framework or earlier .NET
Milestone

Comments

@MauNguyenVan
Copy link

MauNguyenVan commented Jul 8, 2023

Environment

VisualStudio 17.6.4

.NET version

  • Windows Form App template
  • .NET core 7.0

Did this work in a previous version of Visual Studio and/or previous .NET release?

It works in .NET framework 4.8

Issue description

  • Can not display ElementHost (Wpf Interoperability)

ElemenHostNotFound

  • Can not add Wpf UserControl in the Winform in design mode

WpfControlCannotAdd

Steps to reproduce

  • Create a new Windows Form App project with a target framework 7.0.
  • Open Form1.cs in design mode
  • Open Toolbox then search ElementHost (not found this control)

Image WinFormApp .net core 7.0

image

But with .net framework 4.8 has it and works fine
Untitled

Diagnostics

No response

@MauNguyenVan MauNguyenVan added the untriaged The team needs to look at this issue in the next triage label Jul 8, 2023
@MauNguyenVan MauNguyenVan changed the title ElementHost (Wpf Interoperability) do not display in Toolbox WinForms designer ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer Jul 8, 2023
@MauNguyenVan MauNguyenVan changed the title ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer And Wpf UserControl can not add in winform designer Jul 8, 2023
@MauNguyenVan MauNguyenVan changed the title ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer And Wpf UserControl can not add in winform designer ElementHost control (Wpf Interoperability) do not display in Toolbox WinForms designer And Can not add Wpf UserControl in winform designer Jul 8, 2023
@elachlan
Copy link
Contributor

elachlan commented Jul 8, 2023

@Olina-Zhang can you check if this repros in .net 6 please?

@MauNguyenVan
Copy link
Author

In my computer, .NET 6 has the same error

@elachlan
Copy link
Contributor

elachlan commented Jul 8, 2023

Much appreciated. Team will need to have a look.

@Olina-Zhang
Copy link
Member

Olina-Zhang commented Jul 10, 2023

@Olina-Zhang can you check if this repros in .net 6 please?

There are known issues in Winforms designer repo: https://github.com/microsoft/winforms-designer/issues/919, https://github.com/microsoft/winforms-designer/issues/2626.

@MauNguyenVan
Copy link
Author

MauNguyenVan commented Jul 10, 2023

@Olina-Zhang can you check if this repros in .net 6 please?

There are known issues in Winforms designer repo: https://github.com/microsoft/winforms-designer/issues/919, https://github.com/microsoft/winforms-designer/issues/2626.

Sorry, these URLs do not exist. maybe i have not permission

@elachlan
Copy link
Contributor

@MauNguyenVan the designer repo is currently closed source.

@Tanya-Solyanik Tanya-Solyanik added the area-VSDesigner Windows Forms out-of-proc designer related issues label Jul 12, 2023
@merriemcgaw
Copy link
Member

This is known work that we have on our backlog in our private Designer repo. We don't have a specific timeline yet. We will keep you posted.

@merriemcgaw merriemcgaw removed the untriaged The team needs to look at this issue in the next triage label Jul 12, 2023
@merriemcgaw merriemcgaw added this to the VS release milestone Jul 12, 2023
@dotMorten
Copy link
Contributor

I spent quite a time on this too, only to finally find this issue. Would love to see this fix as I have customers relying on this control to bring WPF controls into winforms.

@ImHappyMostOfTheTime
Copy link

This has been holding me back from migrating my main framework project to .net.
I've worked around it by manually editing the form designer to add an element host (copying what happens to do the same thing in a framework app)
Annoyingly if you create a wpf usercontrol, this will show up in the toolbox , but dragging it on to the form causes an error.

On this screen shot you can see I've manually added the wpf ctrl by hand, but if I drag from the toolbox I get this error.

elementhost

@bernox89
Copy link

bernox89 commented May 2, 2024

Is there any news for this problem? I have a project in .net core, but I didn't know about the problem otherwise I would have created the project in .net framework.

@molt2020
Copy link

molt2020 commented May 4, 2024

Same here, stuck trying to port to .NET 8. Initially build worked and my ElementHost-ed WPF component worked well and then... it just dissapeared from the designer.

I can still see my WPF user control in the Toolbox palette but I can't see Element Host / WPF integration anymore and I can't add the WPF user control directly. It comes up with a generic message how the component should implement IComponent and have suitable constructor but this is already the case and I can use the WPF component in WPF projects so it must be the designer issue.

If there is no timeline for the Designer fix, could you at least provide a workaround or any insight into what is happening??

@elachlan elachlan added the blocking-migration An issue that is preventing the developer from migrating from .NET Framework or earlier .NET label May 4, 2024
@dotMorten
Copy link
Contributor

@molt2020 the elementhost works just fine - you just have to add it in code (or copy it over from a framework version). It’s only that it won’t show in the designer but otherwise the designer continues to work for other controls

@molt2020
Copy link

molt2020 commented May 4, 2024

Thank you @dotMorten - I reverted the code and it compiles and works! 👍

It would be good to have this fixed so it shows in the palette as manually editing designer files is no fun

@bernox89
Copy link

bernox89 commented May 4, 2024

@molt2020 the elementhost works just fine - you just have to add it in code (or copy it over from a framework version). It’s only that it won’t show in the designer but otherwise the designer continues to work for other controls

I didn't succeed without having it in the toolbox. Can you give some examples of how you managed to integrate the control. A thousand thanks.

@molt2020
Copy link

molt2020 commented May 5, 2024

@bernox89 I just reverted code back to what Designer made and after Designer decided to remove the entire component from the designer code. So far, the Designer has not removed the code again. Here is the code in case it is helpful

private System.Windows.Forms.Integration.ElementHost elementHost_CurrentRecordInfo; this.elementHost_CurrentRecordInfo = new System.Windows.Forms.Integration.ElementHost(); this.elementHost_CurrentRecordInfo.Child = this.myWPFControl;

there is no other ElementHost-specific code to hoist the myWPFControl into it. There is some extra code int the designer to place the elementHost_CurrentRecordInfo onto the Windows Form (i.e. into a Grid Cell etc) which will be different for your project anyway so I have removed it from the post here as clutter.

You don't have to keep this in the .Designer.cs file either if you worry the Designer may overwrite or remove it.

Hope it helps.

@bernox89
Copy link

bernox89 commented May 19, 2024

thanks for the help anyway. I solved it independently only from C# code following these steps, without having elementhost available from the toolbox:

  1. Set properties in winforms project to also use WPF
  2. Import any WPF libraries using project references
  3. Enter any uses for the wpf controls/libraries
  4. with this code example it works great, in my case I needed to have the syncfusion tool to edit images and have it on winforms which does not exist natively.

using section:
using System.Windows.Forms.Integration; using Syncfusion.Licensing; using Syncfusion.Windows.Controls; using Syncfusion.Windows.Shared; using Syncfusion.Windows.Tools; using Syncfusion.UI.Xaml.ImageEditor;

code to use the control:

SfImageEditor imageEditor = new SfImageEditor(); ElementHost host = new ElementHost(); host.Dock = DockStyle.Fill; host.Child = imageEditor; this.Controls.Add(host); host.Dock = DockStyle.Fill;

I hope I have been useful to someone

the only thing we don't have is the graphic control available in the designer, but it comes second in my opinion.

@ImHappyMostOfTheTime
Copy link

While its possible to add a wpf control/ElementHost by hand I'm reluctant to do this in my production project as it doesn't feel like its supported by Microsoft. Perhaps this is Microsoft's way of pushing us to use WinUI 3? I wouldn't mind but WinUI is missing so many features, feels like its still very early in development. So for now I'm choosing to stay with .net framework which I don't really want to.

@IefVandepitte
Copy link

IefVandepitte commented Jun 25, 2024

Started to get this behaviour after updating vs to 17.10. Stopped using the out of process designer for winforms, reopened the solution and now it's back in the toolbox

@xmaxrayx
Copy link

reponing doesn't fix the issue for me, net 8.

@xmaxrayx
Copy link

Ok I switched from Net 8 to NET Framework 4(only windows), and fixed my issue.

@dotMorten
Copy link
Contributor

@ImHappyMostOfTheTime what makes you think it isn’t supported? It’s fully supported in your app. It is only the design time experience that isn’t. If a lacking design time experience would be the reason something isn’t supported you’d think winui3 is completely unsupported since it doesn’t have a designer at all 😉

@ImHappyMostOfTheTime
Copy link

@dotMorten , I think having to edit a file that clearly says it shouldn't be edited doesn't suggest its supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-VSDesigner Windows Forms out-of-proc designer related issues blocking-migration An issue that is preventing the developer from migrating from .NET Framework or earlier .NET
Projects
None yet
Development

No branches or pull requests