dotnet / wpf

WPF is a .NET Core UI framework for building Windows desktop applications.
MIT License
7.05k stars 1.17k forks source link

Make WPF cross-platform (MacOS and Linux support) #48

Closed x2bool closed 5 years ago

x2bool commented 5 years ago

Please port WPF to other platforms so we could use it to build desktop software for other operation systems.

lindexi commented 5 years ago

@feliwir lc-soft/LCUI: A small C library for building user interfaces with C, XML and CSS.

popcatalin81 commented 5 years ago

I don't think this discussion should be about cross-platform XAML, XML or others, because already are sensible solutions there.

This thread should be about cross-platform WPF specifically. Why WPF and not xaml, because there is a huge investment in WPF, apps. controls, libraries, which would benefit from the migration. It's not about the transfer of skills (and XAML is not that complex anyway), it's about the transfer of existing investment and providing a clear and unambiguous path into the future for WPF specifically.

lindexi commented 5 years ago

@popcatalin81 Do you mean https://github.com/Microsoft/xaml-standard?

Nassiel commented 5 years ago

This one should be based on OpenGL to make it truly cross-platform.

For your information OpenGL is deprecated on Mac OS X and the support for it will be removed in the future.

OpenGL, Vulkan, or similar graphics platform. The key point is creating on top of a cross-platform framework, something non-cross-platform. Even when people offered to develop the enormous work of making it cross-platform, the actively denied it.

Joebeazelman commented 5 years ago

A cross platform WPF would be nice, but I think what most people here want is a XAML-based cross platform UI engine. Microsoft claims it can't deliver one because it is too hard. I just don't buy it coming from one of the largest corporations in the world.

Microsoft had SilverLight (XAML-based) running across platforms years ago by targeting low-level platform graphics primitives. Miguel and his tiny team were even able to port it to Mono as Moonlight. Microsoft senselessly killed SilverLight, allowing for the continued tyranny of html/css. Later they introduced Windows 8 and demanded developers use WinRT, creating self-inflicted FUD. Developers became unsure of Microsoft's roadmap concerning not only WPF, but .NET itself. Microsoft never gave their official position, further alienating their developer base.

Thanks to those idiotic moves, Microsoft now finds itself playing follow the leader with Google and Apple leading the future. Windows desktop developers, with no modern UI platform to hang their hat on, switched to the browser or Qt for more demanding graphics development. Since they already switched to UI engines, they might as well switch languages, IDEs and even platforms. Usher in mobile devices, in which Microsoft lost badly, Windows-only development is now nonsensical. UWP was Microsoft's ill advised disaster recovery. UWP is a least common denominator UI engine, enforcing a limited, mobile-centric UI on the desktop.

Microsoft is running around frantically looking for relevance. It embraced open source and spent $7 billion to buy GitHub just to win back developers. While Windows mobile and Windows 8 was devastating, the self-inflicted FUD surrounding WPF has made it far worse and unrecoverable. All Microsoft has now is Azure, business applications and a small and dwindling Windows user base. All these markets are up for grabs by competitors.

MV10 commented 5 years ago

@Joebeazelman The Windows userbase is hardly small or dwindling, but you pretty much nailed it, otherwise. I want to gag every time I see some web-blind dev gush about Electron or some other browser-based garbage. I read somewhere that MS had close to a thousand people working on the original WPF. The OSS+netcore thing is nice, but they need a big push to modernize it, they need to dogfood it, and xplat might be the eye-opener they need.

.NET Core's history has been "We aren't going to do that," then a year later they're doing it, so maybe there's still hope. I recently led a push in my own company to switch back to native Windows apps, but sadly it's going to die because of the sheer momentum behind web apps. But it was amusing to see how shocked web-only devs and non-technical managers were at the performance levels possible with a native Windows app. Kids these days...

shmuelie commented 5 years ago

.NET Core's history has been "We aren't going to do that," then a year later they're doing it, so maybe there's still hope.

More "under promise and over deliver", which is better than Longhorn 😒

zezba9000 commented 5 years ago

@MV10 " I want to gag every time I see some web-blind dev gush about Electron or some other browser-based garbage." -- I'm in this boat as well. HTML/JS/TS suffers from issues MS-XAML fixed over 10 years ago.... its a sad joke people have been forced to go down that bug prone path. Non Type-Safe UI isn't a good idea.

Joebeazelman commented 5 years ago

@MV10 Perhaps 'dwindling' maybe a bit strong, but the momentum has been building for sometime against Windows. Back in the late 1990s, Apple was left for dead and you'd be considered a fool to think Microsoft Windows would ever lose marketshare to any competitor, especially Apple. Fast forward a couple of decades later and behold the most spectacular comeback story ever told. Apple's marketshare across laptops and desktops were in the 2% to 3% range around 1999. Today it has reached roughly 9%. As for consumers alone, it may be even higher.

I abandoned Mac development two decades ago after falling in love with .NET and my dislike of UNIX, but I recently purchased an older model 2014 MacBook Pro and it has blown me away with the shear productivity increase. The idea of starting this comment on my iPad at home and then finishing it on my laptop at Starbucks while also texting my wife and facetiming my kids on both is surreal science fiction to say the least. I've seen tons of sales and service workers using iPads and iPhones as their primary device and they love it. It is surprising Apple hasn't positioned their products for the business market as clients for their enterprise server apps. It's probably on their secret roadmap.

While windows was once the 800 pound Gorilla, today it is merely a 600 pound one being challenged by younger alpha males. The growth in the desktop market has been slowing over the past five years. Windows 10 is less than half of the market with many users refusing to upgrade from Windows 7. Businesses are trying to save money by off-premising their applications and using lighter weight clients. This is a very different scenario from what it was a decade ago.

lindexi commented 5 years ago

Can we bring the WPF to the modern browser by WebAssembly? Maybe it can barely be considered cross-platform.

The long long years ago, we can build a WPF web application but our customers should install some application to support it.

But I still do not think it a good way.

lindexi commented 5 years ago

Maybe the xaml can be cross-platform like the HTML and C# can be used in the browser by WebAssembly that we can write a web page without HTML and js and we can use xaml and C# to write a web page.

But I sure it is not WPF.

MV10 commented 5 years ago

@lindexi See http://www.cshtml5.com/ ... not exactly what you describe, but headed in that direction. However, I think it would be a crying shame to bog down WPF/XAML with the dumb-terminal overhead of a browser environment. The browser isn't an OS. People need to stop trying to shoehorn everything into a fundamentally clumsy client-server document-viewer paradigm.

@Joebeazelman The Win7/Win10 thing is history at this point (for example, article). Microsoft has always been terrible when it comes to marketing (and related things like overly complicated product "levels" and licensing packages and so on), and that's really what Apple and Google have exploited. One thing I suspect we can agree upon: MS needs to get their butts in gear and focus on their enterprise base -- the majority of Windows users sit at a keyboard, not a tablet, and they are most likely there to work. And in the enterprise environment, IT owns the desktop and the servers, making it the perfect place to leverage native Windows apps.

You start showing users that Windows apps are blazingly fast compared to browser-based script-junk and it just might drive a general demand for better UI/UX experiences. Although I must sadly concede that it's entirely possible they've already missed that boat.

lindexi commented 5 years ago

@MV10 That is a good idea.

walterlv commented 5 years ago

@MV10 The CSHTML5 seems to be a good solution for me to try. Thanks.

mohamedmahmoudalemam commented 5 years ago

WPF is one of the best GUI frameworks in the world, It must be Cross platform, It must be.

chrpai commented 5 years ago

Can someone explain to be why VS2019 has a WPF .Net Core 3.0 project type? I built one, ran it on windows no problem and then tried to run it on a Mac and got an invalid runtime message. I really need a way to write multiplatform native desktop applications using C#/.NET/WPF. I'm tired of everyone always choosing web app and/or electron app because we don't have the tools in our stack to get the job done.

popcatalin81 commented 5 years ago

Can someone explain to be why VS2019 has a WPF .Net Core 3.0 project type? I built one, ran it on windows no problem and then tried to run it on a Mac and got an invalid runtime message.

Yes, guys please start explaining this. You'll have lots of people to explain it to.

shmuelie commented 5 years ago

Because .NET Core doesn't mean cross platform? It just means runs on the .NET Core runtime using the .NET Core framework?

See https://devblogs.microsoft.com/dotnet/net-core-3-and-support-for-windows-desktop-applications/ and https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-1-and-open-sourcing-windows-desktop-frameworks/

MV10 commented 5 years ago

Because .NET Core doesn't mean cross platform? It just means runs on the .NET Core runtime using the .NET Core framework?

.NET Core is cross platform but WPF isn't part of .NET Core, it's an add-on.

shmuelie commented 5 years ago

Yes, .NET Core itself is cross platform. Libraries and applications written using .NET Core do not have to be though.

chrpai commented 5 years ago

Understood. What I'm trying to ask is WHY strategically / tactically I would choose .NET Core WPF over .NET Framework WPF when either way it'll only run on windows? Am I hoping for a one day future where it'll run somewhere else? I ask because I have an open source Winforms app that I'm porting to WPF MVVM and would love to go multiplatform one day.

raffaeler commented 5 years ago

@chrpai one of the values of .NET Core is the ability to run multiple versions truly side by side. Also, you can ship your app together with all the requirements (including the CLR itself) when deploying as "self-contained deployment". There are tools (coming with netcore 3.0) that will give you the ability to ship a single exe. For details, read here: https://devblogs.microsoft.com/dotnet/net-core-3-and-support-for-windows-desktop-applications/

zezba9000 commented 5 years ago

@chrpai .NET Core is faster and supports newer frameworks and features. .NET Framework 4.8 will probably be the last major version of that runtime and library set.

johngsandiford commented 5 years ago

MS probably want to ditch the original framework going forward in favour of core + we have found core to be 20% faster in many cases, so you get a massive perf increase even with wpf on windows. Unfortunately it does lead to a lot of confusion. However, we are now using 80-90% of the same code base with our wpf code and our new cross platform razor components (+wasm if promoted) which is exciting.

GiantappMan commented 5 years ago

I think you guys need google flutter. I really hope xaml can be a cross platform UI toolkit,but it seems impossible forever

Atulin commented 5 years ago

I think you guys need google flutter. I really hope xaml can be a cross platform UI toolkit,but it seems impossible forever

Flutter does not export to desktop targets yet, unless you jump through a few hoops to use stuff that hasn't even been added to the tooling yet.

I guess with Microsoft ignoring cross-platform UI frameworks and Avalonia having close to no documentation, I'll have to either learn Java or resort to the dreaded Electron...

I love C# and .NET and want to use it everywhere, but I guess Microsoft doesn't want me to. Did they invest in Electron stocks or something and are deliberately pushing people in that direction?

GiantappMan commented 5 years ago

Sorry for my negative comments before.

I really wish there is a UI framework just like Flutter, It allow me use c# develop high performance application in any platform(ios/android/web/desktop/other platform). xaml + visualstudio + a set of API ( no more different API,such as xamarin/uwp/wpf/wp8/wp8.1/silverlight).

Developer can use one .Net tech develop app to any platform . this will be beneficial to .Net open source community and Microsoft app store also will get more apps

lindexi commented 5 years ago

@DaZiYuan Try Xarmain

GiantappMan commented 5 years ago

I tried before ,it seems map control to native platform, can not keep same UI in different platform. and don't like it. if I had to choose I would choose flutter. Flutter has a bigger community.

x2bool commented 5 years ago

@DaZiYuan Try Avalonia. It is very similar to WPF.

Ruedii commented 5 years ago

There is the option of creating a lightweight partial WPF framework. The elements implemented in WinPR or Winelib (Not full Wine, obviously) could be used for most functions. This would cover the vast majority of end usage of WPF. Thus leaving the only portion not supported to be Driver Framework, Kernel Framework, System-Wide Font Management, any Bare Metal functions and Windows Services Framework. Many of these would be possible to a large degree with a full Wine environment but obviously we don't want to implement a full Wine environment just to run WPF applications, and anything that uses those utilities will be platform specific.

A stripped WPF containing GDI+, MSXML, MSHTML, MSHTTP, WinSocks, Print Spool access, DirectX, TWANE and a good number of other Win32/WIn64 libraries already implemented by portable Open Source projects should be fine.

glyad commented 5 years ago

Have you seen https://github.com/AvaloniaUI/Avalonia ?

Please stop to advertize your project here. Yes, Avalonia is very promissing attempt, but it isn't an open-source implementation of WPF framework. It isn't WPF at all, since it isn't compatible with WPF at least in meaning that I cannot compile an existing WPF project with Avalonia. Let's talk about WPF here!

glyad commented 5 years ago

@DaZiYuan Try Avalonia. It is very similar to WPF.

The word "similar" doesn't mean "equals". Can you run on Avalonia a project, which has 5-7 years of the development livecycle. No? How you can help me with your Avalonia?

Can you try do not advertize Avalonia project in the thread of WPF project? ;)

glyad commented 5 years ago

IMHO, that's possible to create cross-platform implementation of WPF. All you need is following:

  1. Make public WPF API as 100% compatible to current WPF implementation,
  2. Separate WPF from rendering engine and make it possible to develop rendering backends (e.g., DirectX, OpenGL, WebAssembly, etc.),
  3. Separate interface from platform-dependent implementations (e.g., implementation of the browser control, common OS dialogs, etc.).

That's all... or..?

zezba9000 commented 5 years ago

@glyad A 100% WPF implementation would require something like WINE. Thats not practical. Making a WPF subset might be possible that removes Windows specifics.

Also look up WinUI 3.0. If anything that should be ported later as its the WPF replacement for desktop (fingers crossed its done in a way porting is possible).

https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md

MrJul commented 5 years ago

I'm surprised nobody mentioned NoesisGUI yet (or if they did, I missed it).

It's a really performant cross-platform implementation of WPF (they even have a WebAssembly preview). There are of course some small differences and things not implemented yet, but the developers tend to make things as WPF-compatible as possible.

(Note that I'm in no way affiliated with the makers of Noesis, but I find their work brilliant.)

glyad commented 5 years ago

@glyad A 100% WPF implementation would require something like WINE. Thats not practical. Making a WPF subset might be possible that removes Windows specifics.

Also look up WinUI 3.0. If anything that should be ported later as its the WPF replacement for desktop (fingers crossed its done in a way porting is possible).

https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md

It's possible without WINE. It requires to separate code on shared and platform dependent parts (assemblies). Okey, I divine your comments regarding HWND and OS-dependent windows management, participating with Windows message loop, etc. It's exactly the sample of the "Platform" portion of code. There are two ways, how to resolve it:

  1. Do not change the public/protected interface of the Window class, just extend it with Linux/OSX options to provide back compatibility. So, will be possible to change strategy of OS dependent logic and use appropriate interface after OS detection.
  2. The breaking changes way. To remove HWND and Window messaging from Window class. So, all of platform dependent code of the application will be compiled separately from shared with respect to target OS.

Same things regarding the browser control.

GitSrikanth commented 5 years ago

Which framework best suits to develop an UI with multi-platform support - Windows, Linux, Android and iOS mobiles?

This app UI will communicate with .NET Web Server using API's.

I read some where, they suggested below links for Linux platform support. https://github.com/AvaloniaUI/Avalonia https://github.com/GtkSharp/GtkSharp

What I'm looking is common code base for all platform, which is best Framework to suit my requirement. Also came to know that, Android does not have all the Net Libraries that are in full version of Net. So the reference is saying that I must use only Net Libraries that are available on Android for code to be compatible.

I have two requirements.

  1. I need to develop an UI from scratch which runs above mentioned plat.
  2. I have already developed WPF app(with MVVMcross) that can be ported/migrated to any other framework which supports multi platform.
zezba9000 commented 5 years ago

@GitSrikanth For mobile + Desktop support there is also:

For your case if you don't need browser support use Avalonia if you want everything to look the same or Xamarin.Forms if you want Win, Lin and Mac to all have a native feel and is supported by MS.

JakeSays commented 5 years ago

@Ruedii "A stripped WPF containing GDI+, MSXML, MSHTML, MSHTTP, WinSocks, Print Spool access, DirectX, TWANE and a good number of other Win32/WIn64 libraries already implemented by portable Open Source projects should be fine." - I don't think you understand what WPF is. None of those components you mentioned are a part of WPF - it is a UI framework only (although it does use some of those). You also mention a bunch of service frameworks, etc. that are not a part of WPF.

Ruedii commented 5 years ago

Sorry I meant that as a batch list pertaining to all Win32 specific frameworks, not just WPF. I sort of dropped the and other frameworks part from the message.

However, as I mentioned all of the specified APIs have open source implementations available.

On Sat, Jul 6, 2019, 7:02 PM Big Jake notifications@github.com wrote:

@Ruedii https://github.com/Ruedii "A stripped WPF containing GDI+, MSXML, MSHTML, MSHTTP, WinSocks, Print Spool access, DirectX, TWANE and a good number of other Win32/WIn64 libraries already implemented by portable Open Source projects should be fine." - I don't think you understand what WPF is. None of those components you mentioned are a part of WPF - it is a UI framework only (although it does use some of those). You also mention a bunch of service frameworks, etc. that are not a part of WPF.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dotnet/wpf/issues/48?email_source=notifications&email_token=AAYFL2PCGSJZI3WXYGUCMNLP6EQABA5CNFSM4GIETR6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZLBTAI#issuecomment-508959105, or mute the thread https://github.com/notifications/unsubscribe-auth/AAYFL2NY7E2WRE7UOPIYGATP6EQABANCNFSM4GIETR6A .

popcatalin81 commented 5 years ago

Can WPF be made cross platform: YES Does Microsoft want to make WPF cross platform: NO (This is the actual roadblock to cross platform, nothing else, there are no limitations or design issues which cannot be overcome).

All this discussion about APIs is somewhat funny. It's not a question of API's, it's a question of WHY. We should provide Microsoft with some "compelling" reasons to do it, not focus on technical discussions "how" to do it (BTW: lol about that). The debate on how to do it, it's quite premature.

GiantappMan commented 5 years ago

Can WPF be made cross platform: YES Does Microsoft want to make WPF cross platform: NO (This is the actual roadblock to cross platform, nothing else, there are no limitations or design issues which cannot be overcome).

All this discussion about APIs is somewhat funny. It's not a question of API's, it's a question of WHY. We should provide Microsoft with some "compelling" reasons to do it, not focus on technical discussions "how" to do it (BTW: lol about that). The debate on how to do it, it's quite premature.

I want to develop app using WPF and then publish to IOS/Android/Windows pc . just like Flutter or Unity. Flutter has taken the lead, I wish Microsoft don't give up.

GiantappMan commented 5 years ago

If WPF is cross-platform, Strategically , Microsoft can capture more developers from other platforms . And to promote Azure . Increase the number of app for store . Improve the c# open source ecosystem. Improve developer goodwill towards Microsoft.

Microsoft has hurt a lot of developers over the years and all we need is a truly unified xaml UI framework.

MV10 commented 5 years ago

I don't expect Microsoft to change their position on this because cross-platform WPF has no strategic value to them. Even though they've neglected (I'm tempted to say "wrecked") their desktop strategy lately, they still dominate the segment. We're all here because we believe WPF is a superior solution (despite its many flaws, also due to neglect), and you can bet Microsoft is well aware of that. Linux UI is a joke. OSX UI has a hardcore fanbase but it is still a tiny market. Cross-platform WPF would weaken Microsoft's position by making OSX and Linux better Windows desktop competitors. I believe you don't need to look any deeper than that.

This hasn't been an issue with other cross-platform efforts because Windows Server wasn't a leader, OSX is non-existent in the server market, and Microsoft's emerging bread-and-butter, Azure, benefits from cheap Linux servers like everyone else. Other cross-platform UI options like Electron are such crappy stand-ins for native desktop apps that they probably aren't seen as a competitive risk. (Seriously, Electron just needs to die. I can't wait to retire and never write another line of HTML or CSS again.)

popcatalin81 commented 5 years ago

We're all here because we believe WPF is a superior solution (despite its many flaws, also due to neglect)

Yes, WPF is not only the best UI Library from Microsoft, it's also among the very best (if not the best) out of all UI libraries for any platform.

I think there are some compelling reasons to make WPF cross-platform.

I. Windows Azure

  1. WPF is UI Framework used by Visual Studio.
  2. Visual Studio is Microsoft's First Class Development Environment targeting Windows Azure.
  3. Making Visual Studio cross platform, will allow Linux and OSX developers first class access to Windows Azure.

II. Developers

III. Windows Apps ecosystem

MV10 commented 5 years ago

@popcatalin81 Hadn't thought about the VS / Azure combo, that's an interesting point. However, I imagine it would be easier to just add Azure features to VS Code, which is already quite popular on *nix.

tannergooding commented 5 years ago

Can WPF be made cross platform: YES

Yes, same anything could be "cross platform" with the appropriate abstractions/etc. The largest hurdle, IMO, is that there are a number of concepts in WPF and WinForms which are very tied to the Win32 APIs (and to DirectX in the case of WPF) that may not translate nicely to other windowing systems or graphics APIs.

Some of these differences are exposed via APIs (most of System.Windows.Interop or various properties/events/methods exposed on some of the base classes) and some of it is just observable behavior differences. For example, message processing in X11, Wayland, Win32, Cocoa, etc is all subtly different from each-other and that can impact how things flow or trigger off eachother.

Different systems/platforms also may support different window styles or resizing behaviors. For example, some platforms don't have a concept of changing the window size (mobile, small form factor, gaming systems). At the same time, you don't want to only expose things that are common to everything because that is limiting the usability for the majority of usages.

Ultimately, I think a good cross platform UX library would take these things into consideration and would expose a good common base that isn't tied to any particular framework. They would also expose the right feature detection and platform detection APIs so you can trivially light-up functionality when it is available. Apps then need to be written with that in mind as well and should be able to list features they require to run.😄

Non official opinion, thoughts are my own, etc...

Nassiel commented 5 years ago

The problem is always the same, Microsoft does things at 50% and later they'll not understand why they fail. Why Windows Phone fails, why Windows fails in servers, why Bing fails, why Azure is not as big as AWS, etc. Common, even Linux surpasses Windows in the Azure itself.

I won't consider doing WPF cross-platform an easy task, but there are no technical issues on doing it. Qt5 works even in cars or other industrial solutions (an of course in Windows), and Qt5 interfaces runs in almost every Linux desktop, and I don't say all of them because I didn't try all of them.

I agree with all the people that said that more devs will become in a richer environment, market, community. So please Microsoft, stop doing partial solutions!

Can WPF be made cross platform: YES

Yes, same anything could be "cross platform" with the appropriate abstractions/etc. The largest hurdle, IMO, is that there are a number of concepts in WPF and WinForms which are very tied to the Win32 APIs (and to DirectX in the case of WPF) that may not translate nicely to other windowing systems or graphics APIs.

Some of these differences are exposed via APIs (most of System.Windows.Interop or various properties/events/methods exposed on some of the base classes) and some of it is just observable behavior differences. For example, message processing in X11, Wayland, Win32, Cocoa, etc is all subtly different from each-other and that can impact how things flow or trigger off eachother.

Different systems/platforms also may support different window styles or resizing behaviors. For example, some platforms don't have a concept of changing the window size (mobile, small form factor, gaming systems). At the same time, you don't want to only expose things that are common to everything because that is limiting the usability for the majority of usages.

Ultimately, I think a good cross platform UX library would take these things into consideration and would expose a good common base that isn't tied to any particular framework. They would also expose the right feature detection and platform detection APIs so you can trivially light-up functionality when it is available. Apps then need to be written with that in mind as well and should be able to list features they require to run.😄

Non official opinion, thoughts are my own, etc...

Ruedii commented 5 years ago

The only reason I'm interested in cross platform WPF is to make it easier to port applications already using it. I have little interest in using it on my own projects because other GUI frameworks with far better cross platform support exist.

That said there are several portable versions of Direct3D, Direct Draw, GDI+ and most other APIs. I think Microsoft is just too proud to go from sueing these projects to using them.

This pride is why they continue to be behind the curve. Instead of admitting when the community developed something good, be it a standard, a library or a whole OS, they go and stick to their old stuff and live in a world of denial where desktop market share somehow implies superiority.

On Fri, Jul 12, 2019, 4:58 AM Nassiel notifications@github.com wrote:

The problem is always the same, Microsoft does things at 50% and later they'll not understand why they fail. Why Windows Phone fails, why Windows fails in servers, why Bing fails, why Azure is not as big as AWS, etc. Common, even Linux surpasses Windows in the Azure itself.

I won't consider doing WPF cross-platform an easy task, but there are no technical issues on doing it. Qt5 works even in cars or other industrial solutions (an of course in Windows), and Qt5 interfaces runs in almost every Linux desktop, and I don't say all of them because I didn't try all of them.

I agree with all the people that said that more devs will become in a richer environment, market, community. So please Microsoft, stop doing partial solutions!

Can WPF be made cross platform: YES

Yes, same anything could be "cross platform" with the appropriate abstractions/etc. The largest hurdle, IMO, is that there are a number of concepts in WPF and WinForms which are very tied to the Win32 APIs (and to DirectX in the case of WPF) that may not translate nicely to other windowing systems or graphics APIs.

Some of these differences are exposed via APIs (most of System.Windows.Interop or various properties/events/methods exposed on some of the base classes) and some of it is just observable behavior differences. For example, message processing in X11, Wayland, Win32, Cocoa, etc is all subtly different from each-other and that can impact how things flow or trigger off eachother.

Different systems/platforms also may support different window styles or resizing behaviors. For example, some platforms don't have a concept of changing the window size (mobile, small form factor, gaming systems). At the same time, you don't want to only expose things that are common to everything because that is limiting the usability for the majority of usages.

Ultimately, I think a good cross platform UX library would take these things into consideration and would expose a good common base that isn't tied to any particular framework. They would also expose the right feature detection and platform detection APIs so you can trivially light-up functionality when it is available. Apps then need to be written with that in mind as well and should be able to list features they require to run.😄

Non official opinion, thoughts are my own, etc...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dotnet/wpf/issues/48?email_source=notifications&email_token=AAYFL2M472CWE6CPGKQ2PNLP7BBSVA5CNFSM4GIETR6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZZFLHA#issuecomment-510809500, or mute the thread https://github.com/notifications/unsubscribe-auth/AAYFL2KDXBPZL4Z7Q7QRDD3P7BBSVANCNFSM4GIETR6A .