In Winform use SunnyUI and ScottPlot Rendering problems - winforms

The SunnyUI interface library in Winform is beautiful, and the ScottPlot chart library has good performance. However, if both are used in the same project, the SunnyUI interface rendering will be distorted. The authors on both sides said that please contact each other, not their own problems. Please consult the majority of netizens here. Both are open source, SunnyUI personal research is free, and I have obtained a commercial license; ScottPlot is a MIT license.
In Winform use SunnyUI and ScottPlot Rendering no problems

Related

MVVMCross and Prism combination

I've been looking into adopting MvvmCross in developing our next generation of software, mainly with the aim of developing tablet UIs for it. I understand that MvvmCross does not currently support WPF but I can see ourselves developing that and contributing it back.
However, I've also noticed that MvvmCross seems to be very light weight in that there is little support for composite UI as described in the Prism guide.
Unfortunately, we do need to allow for more complex composited UI scenarios.
Given what is stated in https://stackoverflow.com/questions/10224376/mvvmcross-experiences-hindsight-limitations about forking or rolling your own with MvvmCross as a reference, and given that we do need more complex UI scenarios than those that MvvmCross provides, what would the best course of action be, fork and reimplement the parts of prism we need, try to get MvvmCross to work together with Prism as is, or develop our own from the inspiration of MvvmCross and MonoCross?
Update: See Second answer below...
I might need to write a longer answer to this tomorrow...
As an initial answer:
someone has already done a port of MvvmCross to Silverlight and the developers have suggested this might become available to the wider community
the PCL version of MvvmCross should be quite straight-forward to port to WPF - although possibly not if older .Net Runtime versions are required
as the chief dev of MvvmCross to date, I'm personally interested in supporting WPF - especially right now for my project http://github.com/slodge/BallControl which needs a desktop to run in (Windows Store is crippled - pah!)
composite UIs are supported in MvvmCross - e.g. tabs, pivots, panoramas, splits, modal children, etc - but there's not much work been done yet on a full composite UI like often seen in Prism.
I have seen people combine MvvmCross with other IoC frameworks, but (no work that I know of) has been done to date on combining MvvmCross with MEF (which is often used with Prism?)
If I were tackling this problem area, then I'd come at this:
Make sure we try to get a working app out first and foremost - the app matters more than the framework.
For framework, I'd try porting the basic IoC setup across first and some simple navigation
For the custom navigation (for displaying UIs in regions) I'd look at the role of the Presenter in MvvmCross - this is what I use in Tab examples, in iPad split view examples, etc to provide complex UI features.
If this custom navigation isn't enough I'd look at how it might be changed/replaced/extended - my guess is that the genuine requirements for WPF/Prism will actually be quite similar to the genuine requirements for bigger iPad, Surface and Nexus tablet apps.
I'd try to keep everything modular and optional so that small phone apps don't have to pull in big navigation processes that bigger apps might need. The downside of this might be lots of projects and DLLs!
I'd also be open to this splitting into separate project(s) - much of the modern software world is ruled by small targetted apps rather than bigger, sprawling frameworks.
Because I'm part time on Mvx, and this is your full time job, I'd definitely recommend you don't let Mvx hold you back!
My initial reaction is 'yes, I'd be really interested in working on this' - the downside (as above) is that I'm only spare time on mvx....
Here's the second answer...
I took the WinRT version of MvvmCross as a base (but also used elements of Console, WP7, Touch and Droid too)
I produced a simple WPF version of MvvmCross - https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Cirrious.MvvmCross.Wpf
The main feature of this version is that it doesn't contain much in the way of navigation
e.g. don't try calling Back!
e.g. the main presenter is left abstract for the application UI to implement - see https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Wpf/Views/MvxWpfViewPresenter.cs
I then took the TwitterSearch demo app - https://github.com/slodge/MvvmCross/tree/vnext/Sample%20-%20TwitterSearch/TwitterSearch.UI.Wpf
created some simple views (using cut and paste of Xaml from WP7 version)
created a simple Region based presenter - see how RegionAttribute is used in https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20TwitterSearch/TwitterSearch.UI.Wpf/MultiRegionPresenter.cs and in https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20TwitterSearch/TwitterSearch.UI.Wpf/MainWindow.xaml.cs
that was kind of it... give or take a couple of hours of debugging
There's a video of this in action - with some explanation at: http://youtu.be/pYkLxqpu_5E
This is obviously only a first step in Wpf support, but I suspect it is already going to satisfy quite a few use cases... Please feel free to fork the source tree and to extend or replace this first attempt. Also, if it doesn't work for you, then feel free to abandon it and try something else instead.
I will try to work on this more - but can't really prioritise it above paid work... but I am open to being paid to work on mvvmcross too :)

Great WinForms UI examples needed for inspiration

I am a systems analyst focusing on interaction design and usability, normally working on web applications (using my Mac). However, currently I am in a project team working on a legacy application which has a Windows Forms-based front-end.
I try to simplify and clean up the interface but given my web background it's quite frustrating to work within the strict constraints of WinForms and DevExpress 8.3 controls. (WPF would be great but it is not an option: the company has lots of off-shore users logged in remotely to virtual machines. WPF was tested several times and it failed. Windows XP and IE6 are still on all workstations.)
It would be great to see some good examples for elegant UI design for complex forms with lots of input fields in different categories and groups, including read-only sections with meta-data. It should not be fancy, just simple, slick and clean. Do you happen to have some good examples?
It looks like this post might give you some ideas/leads to pursue:
Where are examples of great program UI's built free with Winforms?
I still couldn't find real good ones, only sporadically. The best WinForms examples I found are in Windows XP itself and in other Microsoft products, like IE, Office.
This may be a long shot but have you considered using a metro-style layout (see wp7 et cetera)? I personally think it would be really well suited to forms with large data entry requirements, I mean, you have the spacing that will separate things perfectly for you, and it's all blocky so you know what you're doing.
This is just my opinion, but hope it can help!
With regards to being "restricted" to Windows Forms, I wouldn't see it as this. By creating your own custom controls you can do pretty much anything you want. I've always hand-coded my WF apps and they're always easier (not to mention more fun) to develop than in WPF. I think WPF is the restrictive place, but again that's just me... Haven't used it too heavily at all.

WPF strategies to avoid graphics card sensitivities?

This is essentially a re-state of a question I asked yesterday because the one answer I got didn't appear to understand my question so I must have been unclear. My bad.
Because WPF relies on DirectX it's very sensitive to internals of cards and drivers. I have a case where some simple WPF programs render incorrectly on one modern, brand-new PC with a major brand high-performance graphics card and current drivers. The problems go away if I disable the graphics card (so it uses the integrated grahics). So I know it's the card or drivers. These programs render fine on several other older PC's I've tried them on.
As WPF programmers are there deployment strategies or programming strategies we can use to minimize the risks and exposures to stuff like this? If we can't count on WPF rendering properly on major brands of PC's and graphics cards what can we do? How common are issues like this with WPF?
Original post: WPF graphics card problem
If you are having hardware-dependent rendering issues, you can work around it by forcing software rendering. (In my experience, this has almost never been necessary; in most cases of video glitches, ensuring that customers have the latest drivers has solved the problem. As a WPF developer, I don't worry about this problem.)
If you're using WPF 4, use RenderOptions.ProcessRenderMode to force software rendering for the current process.
In WPF 3.5, your only option is to disable hardware rendering for all WPF applications on by editing the registry. Create/open the HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics key and create a DWORD value DisableHWAcceleration with the value 0x1.
For more details, see Software Rendering Usage in WPF.

Staffing a WPF + Silverlight project

If staffing a "Silverlight / WPF business app" project would you include a team of graphic designers?
In order to staff a Silverlight project its generally a good idea to fill three roles:
UX
Creative
Technical
UX is
typically a front loaded activity
that operates primarily during
analyze and design and whose
deliverables input into build.
Creative gets brought in during design. Creative has two basic roles: Visual Designer and Interaction Implementer. A Visual Designer will be heavily utilized during the design phase and will live in tools like Adobe Illustrator or Expression Design to construct visual assets. A Visual Implementer will be most heavily utilized during the build phase where they will work side-by-side with the technical team to integrate the visual assets into the solution. Ineraction Implementers will live in Expression Blend.
Technical is of course utilized the heaviest during build but, as usual you should bring your Technical Architect on during Plan & Analyze to help steer Functional, UX, and Creative towards feasible solutions. Developers will live in Visual Studio and Expression Blend.
Depending on the skill sets of your team you may have some cross over personalities along the Implementer/Developer boundary. As developers get more and more savvy in the ways of Expression Blend, I think we could see this role as a secondary or tertiary skill set for many developers.
Generally, its a good idea to bring on UX & Creative resources if you are trying to achieve some higher order levels of user experience but it is not required and I would say in your case specifically it would be a "nice to have".
Silverlight is a highly viable development platform for building standard line of business applications. Silverlight is not just about flashy graphics. Its about building web applications that have all the features modern users have grown to expect with faster time to market and lowered maintenance costs. Oh, and if you want to add some piz-azz with all the spare time you have...you can do that to. :-)
I don't know if I would include Graphic Designers. I would look for UX (User Experience) Designers.
A UX Designer will have the skills of a Graphic Designer with an understanding of User Interface Design.
Here is something that I wrote as JDs for staffing a Silver light Project.
UX Designer Profile
Ability to visualize and create
user experiences, and to translate
them to UI designs using Expression
Blend
Excellent understanding of XAML and
capabilities of Silverlight
Excellent understanding of creating and applying styles and templates
Ideal
candidate will have been working with
Silverlight 1.0 since its inception,
with examples showing level of
expertise with an understanding of
enhancements made with 2.0 and 3.0.
Silverlight Architect
Ability to guide the team by putting in place the required tools and frameworks (end to end) for Silverlight specific projects
Experience using Expression Blend and Visual Studio for Silverlight application development
Good understanding of XAML
Styles, Triggers, Observable Collection, Data Binding Methods, Model View View-Model (MVVM) pattern, Navigation patterns
XML and LINQ within Silverlight
All aspects of Silverlight framework including DLR, Isolated storage etc
Understanding about essential application blocks like Composite application block (Prism)
Excellent understanding on using RIA, WCF services and ADO.NET Entity framework services with Silverlight
Excellent knowledge of development within .NET 3.0 & 3.5 Framework
Must understand the fundamentals of software development, including best practices and OOP design patterns. An understanding of cross-browser Front-end development issues is important
Knowledge about 3rd party UI libraries
Familiarity in Live Mesh technologies
Silverlight Developer
Experience using Expression Blend and Visual Studio for Silverlight application development
Excellent C# and XAML skills
Experience in using MVVM
Strong JavaScript skills
Working knowledge of development within .NET 3.0 & 3.5 Framework
To me, it depends on the project and the quality of the UI you are looking for. For a lot of internal projects, hiring on a full time graphics designer might be a bit overkill. If you are creating an external facing website/project, then you should definitely bring someone with user design experience on board.
I think the job position title du jour is 'Interaction Designer' - they are the ones who speak the lingo of user experience, usability, etc. In other words, the ones who are experts in 'interaction design.' You want a team of them instead of graphic designers.
Obligatory wikipedia article on iteraction design: here
Graphic designers are nice, but unless you are building an OS, you don't need a team of them. Just a few to build mock-ups in Blend, or Photoshop (and let your developers translate photoshop images to XAML with Visual Studio)
Of course - theoretically, they are supposed to use Expression Blend Studio, but that doesn't work very well, so you need to find a techy UI person who can work in VisualStudio. Always have UI people if you are building UI though - having professional looking apps is just as important as having apps that work well.
Without splitting hairs about the job description I would answer a huge Yes to this! Give your developers the freedom to focus on the code they're good at and get an application that looks incredible at the same time. This is a huge win.

What exactly is WPF?

I have seen lots of questions recently about WPF...
What is it?
What does it stand for?
How can I begin programming WPF?
WPF is a new technology that will supersede Windows Forms.
WPF stands for Windows Presentation Foundation
Here are some useful topics on SO:
What WPF books would you recommend
What real world WPF applications are out there
From my practice I can say that WPF is a truly amazing technology however it takes some time to get used to because it's totally different from the WinForms.
I would recommend you to take a look at this demo.
WPF is the next frontier with Windows UIs.
Built on top of DirectX, it opens up hardware acceleration support for
your .Net 3.0+ user-interfaces.
Emphasis on Vector Graphics - UIs scale and render better
Composable UIs. You could nest animated buttons in combo boxes.. the world's your oyster.
Is a rewrite with only minimal core components written in unmanaged code VS GDI-User Dll based Winforms approach which is a thin managed layer over largely unmanaged code.
Declarative approach to UI programming, User Interfaces are largely specified in a XML variant called XAML (eXtensible Application markup language) pronounced Zammel. This opens up WPF to designer folks who can specialized tools to craft UIs that the developers can then code up. No translation losses between wireframes to final product.
MS 'allegedly' will not provide any future updates to Winforms. Heavily invested in WPF as the way forward
Oh yeah, before I forget. Works best on Vista :)
You can get either Adam Nathan's WPF Unleashed Book or Chris Sells Programming WPF .. those seem to be the way to go. I just read the first chapter of Adam's (Lead for WPF at MS) book. Hence the WPF praise fountains :)
Take a look here http://windowsclient.net/ and here Windows Presentation Foundation (WPF)
Basically WPF is created to make windows form easier to design because of the use of XAML, designers can work on the design and programmers on the underlying code
WPF is the Windows Presentation Foundation. It is Microsoft's newest API for building applications with User Interfaces (UIs), working for both standalone and web-based applications.
Unsurprisingly, there is a very detailed but not all that helpful Windows Presentation Foundation page at Wikipedia.
The WPF Getting Started Page at the Microsoft MSDN site is probably a better place to start.
Is the new Windows Gui system. I don't believe its aim is to make development easier per se but more to address fundamental issues with WinForm, such as transparency and scaling, neither of which WinForm can effectively address. Furthermore it seeks to address the "one resolution only" paradigm of WinForm by mapping sizes to real-pixel sizes and making flow layout easier and more fundamental.
It's also based on an XML derivative making it easier to change the UI and forcing a separation of the UI and the core code (although technically you can still badly hack it together in this manner).
This separation also drives a desire to be able to divide the work into two camps, the designers taking charge of the XAML and layout and the programmers taking care of developing the objects used in the XAML.
Check out Eric Sink's Twelve days of WPF 3D.
Windows Presentation Foundation. It's basically Microsoft's latest attempt to make development easier, and provide a whole heap of nice functionality out of the box. I'm not sure where to start, but googling "WPF 101" should throw up a few useful links.
WPF is part of the .net 3.0 stack. Its microsoft's next generation Graphical User Interface system. All the information you need can be found on wikipedia and msdn's wpf site
To Get Started programming I guess check out the essential downloads on windows client

Resources