WPF Rant
-
The results available with WPF can be great. The way to achieve those results is a pain in the backside. When someone develops a GUI tool to effectively edit XAML it will be a vast improvement. Personally I don't think that is now ever going to happen and Xaml will eventually die.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
I'm not sure what you mean with bringing CSS horrors to application development? I love xaml / C# combo. :-) It's indeed a steap learning curve though. Once you understand the magic, I feel like it's super easy (and fast) to get stuff going on screen. MVVM is a must, though.
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
I have been working with WPF for something like 7 years, and I still go through times when I wonder if it is insane, or insanely beautiful. I usually conclude that it is a bit of both. Often it takes a lot of work and verbosity and debugging to hook something up in XAML and have clean separation when it could be done with a bit of C#, but doing things declaratively is a bit of a game. It can be fun to learn, but sometimes it just isn't worth it to achieve the separation between code and layout. It is an addictive game, though, that pulls you in deeper and deeper. At some point along the way it clicked, and I started breathing Styles, triggers, attached properties, DataTemplates, ControlTemplates, Bindings, RelativeSources, CollectionViewSources, StaticResources, DynamicResources, TemplateBindings, BooleanToVisibilityConverters, custom IValueConverters, DoubleAnimations, LinearGradientBrushes, Grid.ColumnDefitions, TransformGroups, AffectsRender, Storyboards, oh my! "I don't often" enjoy writing XML, but when I do, it's XAML. I never used Blend, doing most by hand in Visual Studio, with its Intellisense that reads your mind, letting you avoid writing the bulk of the actual XAML. (I'm stuck with VS 2012 when editing XAML, since for some reason 2013's XAML editor crashes on my stuff by running out of virtual memory and I'm not alone.) For newbies, I definitely recommend learning via the top MVVM frameworks and/or books, and keeping references like http://wpftutorial.net/[^] handy, as WPF has a uniquely obtuse learning curve. I like to learn things by getting my hands dirty and diving in, but for this, take the time to learn some of the theory from someone who knows how to present the concepts in an easy to manage order. Also when you delve into bindings and collections, check out Bea Stollnitz's blog[^]http://www.zagstudio.com/blog[^]. She is some kind of superhuman that invented and can explain the bindings. Also, browse WPF articles here on codeproject, so you can see all the cool things that can be done. When WPF is my favorite thing, CodeProject becomes my favorite site. (And if I get stuck, stackoverflow is my go to.) I also
-
The results available with WPF can be great. The way to achieve those results is a pain in the backside. When someone develops a GUI tool to effectively edit XAML it will be a vast improvement. Personally I don't think that is now ever going to happen and Xaml will eventually die.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
What are you missing in the XAML editor? I prefer to write XAML instead of using the designer and I think it is faster than doing the same with WinForms in the WinForms designer. I can't see the "ridiculous verbosity of XAML". You write the properties which you would set in the property window for WinForms. If you have a look at the generated WinForms code, that is ridiculous verbosity.
-
What are you missing in the XAML editor? I prefer to write XAML instead of using the designer and I think it is faster than doing the same with WinForms in the WinForms designer. I can't see the "ridiculous verbosity of XAML". You write the properties which you would set in the property window for WinForms. If you have a look at the generated WinForms code, that is ridiculous verbosity.
Obviously writing Xaml is faster than writing Winforms purely in code - but thee designer for Winforms works and works reasonably well. The designer for Xaml is slow, buggy, crashes frequently, caches some stuff that require a restart of VS to fix, doesn't handle some things at all - so you need to resort to editing Xaml. Now for a simple form with a few controls, that's all good. For a complex control with many many panels, grids, lists etc. changing the layout is a nightmare - just negotiating the Xaml can be a nightmare because VS2010 takes so damn long to parse the Xaml (even when not displaying the view) that one loses the will to live waiting for it!
Christian Wulff wrote:
ridiculous verbosity of XAML
It wasn't me that said it - but I can see what people mean. it is verbose. Sure you only set the same properties you would by using the forms designer and setting properties - but again the designer lets you down by making it necessary to hand-write much of it rather than using a good tool to save you mucking up the level of curly braces etc.
Christian Wulff wrote:
If you have a look at the generated WinForms code, that is ridiculous verbosity.
Absolutely. But, then, you don't need to because the designer works.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
-
I have been working with WPF for something like 7 years, and I still go through times when I wonder if it is insane, or insanely beautiful. I usually conclude that it is a bit of both. Often it takes a lot of work and verbosity and debugging to hook something up in XAML and have clean separation when it could be done with a bit of C#, but doing things declaratively is a bit of a game. It can be fun to learn, but sometimes it just isn't worth it to achieve the separation between code and layout. It is an addictive game, though, that pulls you in deeper and deeper. At some point along the way it clicked, and I started breathing Styles, triggers, attached properties, DataTemplates, ControlTemplates, Bindings, RelativeSources, CollectionViewSources, StaticResources, DynamicResources, TemplateBindings, BooleanToVisibilityConverters, custom IValueConverters, DoubleAnimations, LinearGradientBrushes, Grid.ColumnDefitions, TransformGroups, AffectsRender, Storyboards, oh my! "I don't often" enjoy writing XML, but when I do, it's XAML. I never used Blend, doing most by hand in Visual Studio, with its Intellisense that reads your mind, letting you avoid writing the bulk of the actual XAML. (I'm stuck with VS 2012 when editing XAML, since for some reason 2013's XAML editor crashes on my stuff by running out of virtual memory and I'm not alone.) For newbies, I definitely recommend learning via the top MVVM frameworks and/or books, and keeping references like http://wpftutorial.net/[^] handy, as WPF has a uniquely obtuse learning curve. I like to learn things by getting my hands dirty and diving in, but for this, take the time to learn some of the theory from someone who knows how to present the concepts in an easy to manage order. Also when you delve into bindings and collections, check out Bea Stollnitz's blog[^]http://www.zagstudio.com/blog[^]. She is some kind of superhuman that invented and can explain the bindings. Also, browse WPF articles here on codeproject, so you can see all the cool things that can be done. When WPF is my favorite thing, CodeProject becomes my favorite site. (And if I get stuck, stackoverflow is my go to.) I also
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
I am in no position to answer your question, but when WPF was new I looked into it. It looked great and for a time i got very excited about it, but I never had the time to study it and in the end I decided that it wouldn't let me do anything I wanted to do that I couldn't do already. I'm sure I am wrong, there must be advantages. As for 'impenetrability', well that doesn't surprise me. I always find MS logic somewhat odd, though there can be no doubt as to the usefulness of their products in some situations.
-
I have been working with WPF for something like 7 years, and I still go through times when I wonder if it is insane, or insanely beautiful. I usually conclude that it is a bit of both. Often it takes a lot of work and verbosity and debugging to hook something up in XAML and have clean separation when it could be done with a bit of C#, but doing things declaratively is a bit of a game. It can be fun to learn, but sometimes it just isn't worth it to achieve the separation between code and layout. It is an addictive game, though, that pulls you in deeper and deeper. At some point along the way it clicked, and I started breathing Styles, triggers, attached properties, DataTemplates, ControlTemplates, Bindings, RelativeSources, CollectionViewSources, StaticResources, DynamicResources, TemplateBindings, BooleanToVisibilityConverters, custom IValueConverters, DoubleAnimations, LinearGradientBrushes, Grid.ColumnDefitions, TransformGroups, AffectsRender, Storyboards, oh my! "I don't often" enjoy writing XML, but when I do, it's XAML. I never used Blend, doing most by hand in Visual Studio, with its Intellisense that reads your mind, letting you avoid writing the bulk of the actual XAML. (I'm stuck with VS 2012 when editing XAML, since for some reason 2013's XAML editor crashes on my stuff by running out of virtual memory and I'm not alone.) For newbies, I definitely recommend learning via the top MVVM frameworks and/or books, and keeping references like http://wpftutorial.net/[^] handy, as WPF has a uniquely obtuse learning curve. I like to learn things by getting my hands dirty and diving in, but for this, take the time to learn some of the theory from someone who knows how to present the concepts in an easy to manage order. Also when you delve into bindings and collections, check out Bea Stollnitz's blog[^]http://www.zagstudio.com/blog[^]. She is some kind of superhuman that invented and can explain the bindings. Also, browse WPF articles here on codeproject, so you can see all the cool things that can be done. When WPF is my favorite thing, CodeProject becomes my favorite site. (And if I get stuck, stackoverflow is my go to.) I also
-
Obviously writing Xaml is faster than writing Winforms purely in code - but thee designer for Winforms works and works reasonably well. The designer for Xaml is slow, buggy, crashes frequently, caches some stuff that require a restart of VS to fix, doesn't handle some things at all - so you need to resort to editing Xaml. Now for a simple form with a few controls, that's all good. For a complex control with many many panels, grids, lists etc. changing the layout is a nightmare - just negotiating the Xaml can be a nightmare because VS2010 takes so damn long to parse the Xaml (even when not displaying the view) that one loses the will to live waiting for it!
Christian Wulff wrote:
ridiculous verbosity of XAML
It wasn't me that said it - but I can see what people mean. it is verbose. Sure you only set the same properties you would by using the forms designer and setting properties - but again the designer lets you down by making it necessary to hand-write much of it rather than using a good tool to save you mucking up the level of curly braces etc.
Christian Wulff wrote:
If you have a look at the generated WinForms code, that is ridiculous verbosity.
Absolutely. But, then, you don't need to because the designer works.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
_Maxxx_ wrote:
For a complex control with many many panels, grids, lists etc. changing the layout is a nightmare - just negotiating the Xaml can be a nightmare because VS2010 takes so damn long to parse the Xaml (even when not displaying the view) that one loses the will to live waiting for it!
My experience is that with MVVM, I don't have one complex control with many many panels, grids etc. because these are divided into some sub-controls. I choose to edit the XAML directly because for me it is easier that way and not because the designer is buggy. Same like I write HTML instead of using an HTML editor. But most of my WPF experience comes from VS 2012 and VS 2013, which are much faster and more responsive than VS 2010. I didn't want to start a religious war, just sharing my opinion that once I learned MVVM, I prefer WPF and XAML to WinForms and think it is easier :) Especially because I don't write much code-behind and don't need to subscribe to many control Events.
-
Obviously writing Xaml is faster than writing Winforms purely in code - but thee designer for Winforms works and works reasonably well. The designer for Xaml is slow, buggy, crashes frequently, caches some stuff that require a restart of VS to fix, doesn't handle some things at all - so you need to resort to editing Xaml. Now for a simple form with a few controls, that's all good. For a complex control with many many panels, grids, lists etc. changing the layout is a nightmare - just negotiating the Xaml can be a nightmare because VS2010 takes so damn long to parse the Xaml (even when not displaying the view) that one loses the will to live waiting for it!
Christian Wulff wrote:
ridiculous verbosity of XAML
It wasn't me that said it - but I can see what people mean. it is verbose. Sure you only set the same properties you would by using the forms designer and setting properties - but again the designer lets you down by making it necessary to hand-write much of it rather than using a good tool to save you mucking up the level of curly braces etc.
Christian Wulff wrote:
If you have a look at the generated WinForms code, that is ridiculous verbosity.
Absolutely. But, then, you don't need to because the designer works.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
Started reading this reply and I was thinking it sounds like this guy is still using 2010 or older. The new versions on studio have gotten much better at rendering xaml in the designer without crashing hanging etc. Between WinRT/Silverlight/WPF I rarely use or look at the designer, other than maybe once I am done to check my work. The designer generates horrible xaml anyway.
-
I am in no position to answer your question, but when WPF was new I looked into it. It looked great and for a time i got very excited about it, but I never had the time to study it and in the end I decided that it wouldn't let me do anything I wanted to do that I couldn't do already. I'm sure I am wrong, there must be advantages. As for 'impenetrability', well that doesn't surprise me. I always find MS logic somewhat odd, though there can be no doubt as to the usefulness of their products in some situations.
Technically assembler can do everything you need as well. Are you still using that? The power of xaml and therefore wpf, is that it is implemented in an incredibly consistent and logical fashion. Meaning that you can often predict where to do or find things in the xaml code even if you don't know what it is yet. I primarily contrast that to html which is the ultimate design by committee end product. There is a learning curve both for xaml and mvvm, but once over that curve you will be amazed at just how productive you can be.
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
My only gripe with WPF is XAML, as I dislike tag based languages (that includes XML and HTML).
CEO at: - Rafaga Systems - Para Facturas - Modern Components for the moment...
-
I know I'm late to this game, but ..... WPF WTF? X| An impenetrable object model... X| A million-and-one different ways to do everything... X| Brings all the horrors of CSS to application development... X| I'm waiting to see some advantage... :mad: Thank-you! :)
I am always interested when people make the argument that learning something new will make you more productive, efficient, or valuable than using old technology without any qualification on the type of project being developed. We have been developing a project in winform for seven years. We looked at doing the next version of the project in WPF and after months of development concluded that there would be a negative ROI based on the type of project we were developing. Maybe XAML / WPF is valuable on some projects, but not ours! So quit making claims without qualifying the type of development. I would really like to have discussions on what type of development projects WPF/XAML work BEST. And what changes could be made to WPF to make it better for more types of projects.
-
I do LOB in Silverloght (WPFs little brother for the web) and have to now look at MVC with all it's attendant tools (CSS, javascript, knockout, bootstrap, kendo etc). Makes WPF seem simple. Mind you I consider graphics development the most difficult and would not even attempt what you are learning on, give me business data any day!
Never underestimate the power of human stupidity RAH
Agreed. WPF is a lot simpler when compared to doing something equivalent for the web. There are too many frameworks and too many moving parts with web development, I find it a pain. Makes me appreciate what Microsoft has done to streamline desktop development.
-
The results available with WPF can be great. The way to achieve those results is a pain in the backside. When someone develops a GUI tool to effectively edit XAML it will be a vast improvement. Personally I don't think that is now ever going to happen and Xaml will eventually die.
MVVM # - I did it My Way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')
-
I just started, too. So far, the only thing I like about it is that I can have a rounded-corner chromeless window without using third-party code. Whee.
-
I am always interested when people make the argument that learning something new will make you more productive, efficient, or valuable than using old technology without any qualification on the type of project being developed. We have been developing a project in winform for seven years. We looked at doing the next version of the project in WPF and after months of development concluded that there would be a negative ROI based on the type of project we were developing. Maybe XAML / WPF is valuable on some projects, but not ours! So quit making claims without qualifying the type of development. I would really like to have discussions on what type of development projects WPF/XAML work BEST. And what changes could be made to WPF to make it better for more types of projects.
I suppose I would like to know what it is about your winform application that made WPF not a good fit. We personally don't have any WPF in the shop, but have two Silverlight applications. The primary one has several hundred views. Between the Silverlight UI layer and all supporting services, etc, there's roughly 1.2 million lines of code. Personally I can't imagine writing it in HTML5/CSS/javascript. The loss of the power of XAML and the loss of strong typing all the UI code would make me cringe. Yes, XAML is a little more verbose than HTML, but crazy more powerful. Templates, binding, converters, etc. It's a markup language designed for building UIs, not a markup language for hyperlinking text. Whoever that it was a good idea to continue to dress up the pigs that are HTML and JavaScript have done our profession a huge disservice. Someone should have come along years ago and said, "Hey, in theory all of this web development stuff is great, but we need to start with a clean slate" and made the languages that we needed. Personally, I would love to see C# native development cross platform, and XAML as a choice for UI. As for WinForms, I've done my share. But, it seemed like significantly more work in WinForms to adopt patterns built for testing -- MVVM or MVC, dependency injection, etc. I did one WinForm app using PRISM back in the day, but it's no where near as elegant as what we could do in Silverlight.
-
Technically assembler can do everything you need as well. Are you still using that? The power of xaml and therefore wpf, is that it is implemented in an incredibly consistent and logical fashion. Meaning that you can often predict where to do or find things in the xaml code even if you don't know what it is yet. I primarily contrast that to html which is the ultimate design by committee end product. There is a learning curve both for xaml and mvvm, but once over that curve you will be amazed at just how productive you can be.
I am still using assembly language as a matter of fact, though more for fun than for actual applications, though it can be useful. I'm sure that WPF offers rewards, but I have too much on my plate at the moment to take up WPF. It is not high on my list of priorities. Isn't that the problem? Too many technologies to choose from?
-
I suppose I would like to know what it is about your winform application that made WPF not a good fit. We personally don't have any WPF in the shop, but have two Silverlight applications. The primary one has several hundred views. Between the Silverlight UI layer and all supporting services, etc, there's roughly 1.2 million lines of code. Personally I can't imagine writing it in HTML5/CSS/javascript. The loss of the power of XAML and the loss of strong typing all the UI code would make me cringe. Yes, XAML is a little more verbose than HTML, but crazy more powerful. Templates, binding, converters, etc. It's a markup language designed for building UIs, not a markup language for hyperlinking text. Whoever that it was a good idea to continue to dress up the pigs that are HTML and JavaScript have done our profession a huge disservice. Someone should have come along years ago and said, "Hey, in theory all of this web development stuff is great, but we need to start with a clean slate" and made the languages that we needed. Personally, I would love to see C# native development cross platform, and XAML as a choice for UI. As for WinForms, I've done my share. But, it seemed like significantly more work in WinForms to adopt patterns built for testing -- MVVM or MVC, dependency injection, etc. I did one WinForm app using PRISM back in the day, but it's no where near as elegant as what we could do in Silverlight.
I have similar feelings - Web technology ought to be more consistent and more powerful than JavaScript alone (not to say anything isn't possible in JavaScript, but thinking about effort invested). However, JavaScript is ideal for so many Web applications that don't require massive data processing. It is good for hobbyists and small businesses (like mine), as it is fairly easy, with HTML 5, to get cool things done. C# could never comfortably replace JavaScript in these functions as it is simply too heavy a tool to use for many purposes, even if it was truly cross-platform (and I wish it was). I have space on two servers, one using SQL and PHP, the other using .NET technology, but I find it easier to get most things done with the former. However, I anticipate that the .NET server would be more useful for processing large amounts of data or for running code which really requires more than a few thousand lines of script. Hence, I have plans to use it in the near future, initially for one specific project I have in mind. The same goes with all software - each language and framework has advantages in certain applications, which is why I have quite a wide spread of skills in different languages, but that makes me more a jack of all trades, than a master of any one (but that's OK because I am a hobbyist and so can afford to be a generalist).