Clone this wiki locally
Frequently Asked Questions
Use CTRL+F (Command+F on OS X) to find what you're looking for!
Why is WindowsFormsHost and WebBrowser flickering?
- Why is so-and-so WinForms control inside the
WindowsFormsHostinvisible or not rendering?
- Why is the
WebBrowser(or other control) covering my
Flyout(or another control)? [AIRSPACE]
What you are facing is an issue colloquially called the Airspace issue. Due to the different underlying graphical engines used in
WinForms (GDI) and
WPF (DirectX and such), there are some interop issues. Sometimes, your controls appear will be invisible. Sometimes, your
WinForms control may overlap your
It is important to know that this is an
WPF issue, not a
By default, the vanilla
Window class and MahApps.Metro's
AllowsTransparency set to
false. If you set this in MahApps.Metro's
MetroWindow initialized event to
true you will get this issue.
The solution, should for some reason that you need
AllowsTransparency to be set to
true or get the rendering issue with
- Go to https://microsoftdwayneneed.codeplex.com/
- Get (compile) the lib and add it as a reference to your project.
xmlns:interop="clr-namespace:Microsoft.DwayneNeed.Interop;assembly=Microsoft.DwayneNeed"to your XAML.
- Place your Control in the
<interop:AirspaceDecorator AirspaceMode="Redirect" Background="White" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True"> <!--your winforms control or webbrowser here here--> </interop:AirspaceDecorator>
Why is my WebBrowser positioned incorrectly?
WebBrowseris being moved by the
The solution for the issue is to set the
WindowTransitionsEnabled property on your
false (or use the
AirspaceDecorator explained above).
Why is my error template rectangle appearing above another control?
Take a look to this blog post with a nice explanation why this happens.
Simply wrap your
TextBox (or the complete container) in an
How do I use Dialogs synchronously?
The short answer is you can't, unless you use
The long answer is because internal dialogs (dialogs shown inside of a
MetroWindow) are not real dialogs. They are controls shown on top of your
MetroWindow's content. That means that it requires that the UI thread/dispatcher be available to work, just like your controls do.
We use internal dialogs asynchronously so that you can wait for a response from the dialog and keep the UI available for other potential user interactions.
The reason that external dialogs can be used synchronously is because since the dialog has it's own "window", it has its own UI thread that can wait for user input.