Thursday, May 26, 2011

Seven Tips and Tricks Programming WPF

The Internet has much to offer in any topic and there is much to learn, but where to start? I realized many years ago, when I got intrigued by the Windows Presentation Foundation (WPF), short write-ups that help you acquire additional knowledge, which when combined can provide solutions to the bigger picture. This article provides a list of tips I learned a year ago, while scanning for simple solutions to big problems. javascript:void(0)


Use the list Visibility.Collapsed vs Visibility.Hidden 
The collapsed value ensures that the element is not involved in the design and gives you a zero height and width. The latter causes the element to continue to participate in the design. 


Reduce CPU consumption for animations to WPF 
As you know, WPF animations are based on 60 frames per second. You can reduce this to a lower optimal rate, resulting in less CPU usage. Use the timeline. DesiredFrameRateProperty to change the default, set to a lower value as 15, and then changes according to the smoothness you want.











Timeline.DesiredFrameRateProperty.OverrideMetadata(
                typeof(Timeline),
                new FrameworkPropertyMetadata { DefaultValue = 15 }



);





Default of Culture of the application for the Culture of the client machine 


WPF elements expose a property of language that can be used to map language as any culture. When this property is applied to a window, applies to all items it contains. See the sample code that applies the language of contemporary culture. The start function in the application class is an ideal place to implement this change through the application.









protected override void OnStartup(StartupEventArgs e)
{
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)));



base.OnStartup(e);
}









Use StaticResource StaticResource vs DynamicResource are evaluated only once and only for the purpose. Dynamic resources assessment because each time they are requested by the control, and hence make the request to perform slower. Although this is a deferred execution time search makes sense if the action will not change 


The use of WPF Performance Suite to the profile of WPF applications 
WPF Performance Suite is available in the Windows SDK and is composed of a few important profiling tools that allow you to analyze the requests and provide information on the optimizations that can be applied. You can download from the Microsoft website. 


The driller and tools of Visual Profiler profiles give much information and also indicate potential bottlenecks in implementation. This suite is part of the Microsoft Windows SDK for Windows 7 and Vista. NET Framework 3. 5 SP1. 


Avoid design errors with the help of DesignerProperties. Method GetIsInDesignMode 
Most designers often break the "Could not create an instance" error. Although this is due to some unhandled exception occurs in the constructor's control, may not require the code execution at design time.






public SampleControlConstructor()
{
    InitializeComponent();
    if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
    {
        //place your code here.
    }
}




Use IsMouseDirectlyOver event to determine the exact mouse movement. 
The event IsMouseOver respond to mouse movement within a control or their children. 


IsMouseDirectlyOver use the event to determine if the mouse movement on the control and not their containers. This is useful for building the triggers specific change in mouse movement. 

2 comments:

Thomas Clem said...

You have mentioned some great tips to which I got to learn lot from it. Sometimes, short right ups can leverages one with more benefits to which one might would have never thought about it.

Naviya Nair said...

Very good article.. Nice Explanation..
C# Training
Dot Net Training in Chennai
Dot Net Training institutes in Chennai
ASP.NET Training