8 ms·
Six years of Windows Presentation Foundation: What’s changed? (2012)
- maxxxxx 10y agoRight on. WPF was a good idea but they gave up half ways. With better tooling and syntax cleanup it could be great. The way MS treated WPF also made me sceptical of anything new MS ships. There is a good chance they will abandon it soon.
- DaiPlusPlus 10y agoVisual Studio's UI is almost all WPF-based, as are parts of Windows itself (such as Server Manager since WS2012) so if MS were to abandon WPF it would backfire badly unless they decide to kill-off VS and replace it with VSCode... now that's a scary thought.
- maxxxxx 10y agoSure. But there is no innovation in WPF. They could simplify the binding syntax or integrate MVVM better for example. Look at what they did with Razor and MVC. Also visual studio is not exactly a showcase for WPF. 2008 (the last without WPF) had macros and the UI was easily customizable. It was also much faster. they are still far away from that functionality.
- dethswatch 10y agoVS is probably the only reason that WPF is being touched at all. Eventually, they'll say that VS is dead and VSCode is the new VS, then we'll be off WPF and win32 ties, it'll also put to bed the "Why is VS not 64bit yet?" line of inquiry.
- MichaelGG 10y agoVSCode isn't even remotely near VS. But WPF did get a lot of work once VS decided to use it. Up until then, WPF couldn't even render text without making it blurry - that's how little effort it had. I'm guessing that with the Longhorn disaster WPF lost whatever resources it was going to get to make it really kick ass.
- WorldMaker 10y agoThe WinRT/UWP XAML stack is the return/revenge of the Longhorn XAML stack. It took a while to get here, but it is the present now.
- zeroc8 10y agoYeah, but now you can use ReactXP for that, just like the Skype team does. And it runs on UWP, Android, IOS and Web.
- WorldMaker 10y agoReactXP looks interesting, I will explore it some. If your goal is to write .NET (C#, F#, VB.NET, what have you), ReactXP doesn't help. UWP XAML is the answer people seem to be looking for but for whatever reason keep missing it as the successor to WPF.
- maxxxxx 10y agoThe problem with UWP is that there is no migration path from WPF. They are so different that you have to pretty much rewrite from scratch.
- WorldMaker 10y agoMy experience is that there isn't as much to rewrite as most developers think. (But then I've had in the past to maintain Silverlight versions of WPF applications, so I'm biased.) If you are already using patterns like MVVM, databinding, service models, and keeping business logic separated from UI/UX logic, the transition should be mostly seamless from what I've seen outside of a few XAML tweaks (which are primarily fiddly details like namespace changes). In the case of more complicated migrations, you can now use the Desktop Bridge: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root https://docs.microsoft.com/en-us/windows/uwp/porting/desktop...
- 10y ago
- mgamache 10y agoit seems like for years MS was looking for the WPF killer that would unify web and desktop programming (silverlight for example and later JS+Html based apps). That didn't work well, and WPF was left rudderless. Many devs (including myself) have resorted to WPF because it's still the best solution. The stagnation of WPF is a real issue that I hope gets addressed soon. Of course, maybe MS is working on .net core replacement :)
- NicoJuicy 10y agoChances are low, the graphics library has problems to be cross platform. The work on wpf was 'finished'. It's not abandoned, but there is no innovation in it anymore. They will keep supporting it, but are looking for a way to do it crossplatform, which isn't an option yet
- MichaelGG 10y agoThink of how much credit MS would get for making a cross-platform GUI toolkit. End the era of Electron apps without people having to use Qt.
- vintagedave 10y agoThis is why people use Delphi and C++Builder.
- 10y ago
- Lagged2Death 10y agoI've only shipped one or two little things with WPF. I think the author makes plenty of good points. And some points which I'm not advanced enough to understand. But I actually like writing XAML by hand. The GUI-based GUI designers I've tried were never very good about expressing the subtleties and details that you have to deal with if you hope to make a professional-grade result. GUIs that are good at specificity and detail also tend to be quirky and difficult (think CAD systems). The fact that XAML is so closely tied to the actual structures you're creating means you learn the language and its domain together. And you can trivially re-use or re-purpose chunks of XAML by copying, pasting, editing.
- vintagedave 10y ago> ...writing XAML by hand. > The GUI-based GUI designers I've tried were never very good about expressing the subtleties I understand you like writing a UI by hand, and it's always good when a UI has a human-editable text form (if XML counts :)) But in general: it's 2017. The fact you're writing about the need to design a UI by text is extraordinary, and so, so far behind other tools.
- douche 10y agoI'm pretty sure that's what I'm doing on all my HTML/JS UIs...
- vintagedave 10y agoI'm not so in touch with web UIs, but for the desktop or mobile writing by hand is antiquated, and has been for twenty years.
- true_religion 10y agoWhat is used to create desktop UIs? There are a few products for React/HTML/JS that let you create web ui's via a gui interface, but they're not really all encompassing.
- jasode 10y ago>As I look back at WPF, I see a technology that had [...] a lack of investment. >WPF on the other hand hasn't had a major change since 2006. WPF (v1 not beta) was released November 2006. I'm sure that at that moment in time, Microsoft did have optimistic visions that WPF would be widely adopted like Winforms and VB6 Forms before. In 2006, WPF was prominent in MS's strategy. But by 2012, it' wasn't. What changed Microsoft's direction? What did Microsoft not know in 2006? What they didn't know was that 2 months later, Steve Jobs would show the first iPhone. That changed everything. Before the iPhone in 2007: - Research In Motion and Google's Android (1st prototype) thought smartphones would be half-screen, half-buttons. - "fat clients" with rich runtime plugins like Adobe Flash and MS Silverlight would be dominant - there was no significant application development & distribution platform on mobile phones (yes, Nokia had a SDK, and Microsoft had something for Windows CE but neither gained any significant mindshare) If we look at the macro trend, the ongoing investment in WPF assumed that desktop apps would be dominant in developer mindshare (either Silverlight or traditional desktop exe files). With the rise of iPhones/Android, it was HTML5 & Javscript that was aggressively enhancing their capabilities. The rising marketshare of Google's Chrome (2008) with the V8 Engine and Mozilla Firefox improving their Javascript performance also contributed to WPF's abandonment. For native apps on smartphones, developers en masse were more interested in Apple Objective-C or Android Java. HTML5+JS+ObjC+Java all gained mindshare at WPF's expense. Microsoft didn't instantly declare WPF "dead" in 2007 but abandoned it in gradual steps. E.g. the conferences PDC2009, PDC2010 had prominent WPF presentations but the later Build conferences do not. It also didn't help that the first WPF release didn't have masked-edit controls, didn't have a datagrid, and didn't have a good UI designer (Expression Blend purchased separately?). VB6 in 1995 had masked-edit controls but WPF didn't?!? WPF was also very slow even though they touted the underlying DirectX technology. (E.g. Evernote abandoned WPF for C++ WTL.) If you're a developer that wants to code a brand new WPF application today, that's ok but don't expect MS to release new exciting enhancements for it. Today, innovation iteration on desktop GUI libraries are happening faster on Qt for C++ and React/Electron for Javascript.
- batina 10y agoThat is why I'm reverting back to WinForms until something better comes along. No proper data binding support but I can live with that. I'm just hoping that Microsoft, or somebody else, will create a cross-platform GUI toolkit.
- drewrv 10y ago> I'm just hoping that Microsoft, or somebody else, will create a cross-platform GUI toolkit. The good news is that it exists. The bad news is that it's HTML/Javascript.
- vintagedave 10y ago> I'm just hoping that Microsoft, or somebody else, will create a cross-platform GUI toolkit There is FireMonkey. Windows, iOS, Android and macOS. Native controls on Windows and iOS, and on the roadmap for the others. Themeable, vectorized, GPU-powered, data bindings, and can be used from C++ via C++Builder, or Delphi if you want a more C#-like language. Here's a random video about the live preview (where you plug in a device and see live as you edit the UI in the IDE what it will look like on that device): https://www.youtube.com/watch?v=bU_J3WxeClI https://www.youtube.com/watch?v=bU_J3WxeClI Plenty of other videos online too! (Note: I am not neutral, I am employed by the company that makes it.)
- semafour 10y agoEto.Forms is nice for this. It targets WPF, Xamarin.Mac, and GTK, so you get Windows, macOS, and Linux support with a single codebase.
- zerr 10y agoWith the latest updates of Win Forms (high DPI support, ehnacements), isn't it a viable option again? Especially if one wants to have native (Win32) controls.
- douche 10y agoWinForms has always been a viable option.
- _JamesA_ 10y agoI just started learning WPF by rebuilding an old WinForms project and have been overwhelmed with the all of the "half-baked" and outdated information as the author mentions. I've been trying to implement MVVM using a 2009 MSDN Magazine article "Patterns - WPF Apps With The Model-View-ViewModel Design Pattern" [1] as a guide. Are there any decent MVVM frameworks or patterns that are worth investigating? [1]: https://msdn.microsoft.com/en-us/magazine/dd419663.aspx https://msdn.microsoft.com/en-us/magazine/dd419663.aspx
- domy 10y agoPersonally, I've grown very fond of ReactiveUI (https://github.com/reactiveui/ReactiveUI https://github.com/reactiveui/ReactiveUI) over the time I've been using it. While the learning curve upfront is rather steep, I think it's absolutely worth it.
- zip1234 10y agoI've heard good things about Reactive but haven't invested the time in learning it. I have been using Caliburn for MVVM as it simplifies a lot of WPF oddities.
- chrisbennet 10y agoI'm using MVVM Light on a current project. I haven't used any other MVVM tools so I can't tell you how it compares. http://www.mvvmlight.net/ http://www.mvvmlight.net/
- tener 10y agoRisk system in WPF? Come on. These things do need some UI but calling the UI "the" risk system is a stretch. Anyway WPF is workable - far from perfect, but you can actually get the stuff done with it. It is also quite flexible and performant if done right.
- eldavido 10y agoI think the author is talking about a finance line-of-business application that deals with risk, not the technology itself.
- cwingrav 10y agoUsed WPF for a while many years ago (so I'm not up to date on the latest), but I was frustrated by so many oddities and gotchas innate to the system. There were some great demos that made me think I had a handle on how it worked, but then I immediately hit a wall trying to implement a real product. If it weren't for Stack Overflow, and all the people asking the same WPF WTF questions I had, I would have never had achieved any success.
- alimbada 10y agoI love WPF and really miss building apps using it with the MVVM pattern. I've even tried to find open source WPF apps to contribute to, but there's very few of them around it seems; everyone wants to build web UIs. Anyway, here's a product I've come across a few times which might address some of the authors' concerns (was a paid product, but it recently went free): http://www.ammyui.com/ http://www.ammyui.com/
- m_fayer 10y agoI also came to appreciate MVVM through WPF and was sad to see it go. The thing is, MVVM has really flourished on the web - though under various other names. I'm working with VueJS right now, and it's my favorite iteration of MVVM so far, smoother and friendlier, more component oriented, and less dogmatic than what WPF had. New concepts have been added to the pattern as well, state management and data flow is something that the Microsoft stack has never really addressed, and it's a big win. Throw in Typescript and I'm pretty comfie, though I do miss being "closer to the metal."
- Yacks0n 10y agoHey, I didn't see a contact email on your profile but here are a couple projects that could use some help: https://github.com/ArthurHub/HTML-Renderer https://github.com/ArthurHub/HTML-Renderer (looking for contributors actually) https://github.com/bricelam/ImageResizer https://github.com/bricelam/ImageResizer https://github.com/Tyrrrz/LightBulb https://github.com/Tyrrrz/LightBulb https://github.com/Mikescher/AlephNote https://github.com/Mikescher/AlephNote There are also frameworks/toolkits like ReactiveUI, MahApps, etc. that could also use some help, if you want to contribute there.