Skip to main content

WPF Resource


This following blog describes about WPF resource, various type of resources and the differences exist between resources

Getting Started

Resource in WPF is nothing but a way of keeping around set of commonly used .NET objects, such as styles, templates, brushes etc. so that you can use it throughout the rest of the markup in your windows. It simplifies markup, saves repetitive coding and allows to define objects in one place and use it in several places of WPF application.
Resource can be defined both using c# code as well as WPF XAML, below two example describes how to define resource using C# code and XAML.
Example:- C# code

  ResourceDictionary resourceDictionary = new ResourceDictionary();  
  Style style = new Style();  
  style.TargetType = typeof(Button);  
  Setter setter = new Setter();  
  setter.Property = Button.BackgroundProperty;  
  setter.Value = Brushes.Red;  
  resourceDictionary.Add("btnstyle", style);  
Example:-2 XAML Code
     <Style TargetType="Button">  
       <Setter Property="Background" Value="Red"></Setter>  

WPF resource can be used both in code behind as well as XAML. See the below example that describes how to use resources in both way. Note that you need to define your resource first before using it.
       Button btn = new Button();  
       // for using Resource declared in code behind  
       Style mybuttonstyle = resourceDictionary["MyStyle"] as Style;  
       btn.Style = mybuttonstyle;  
       // for using Resource declared in code xaml  
       btn.Background = (Brush)this.FindResource("MyStyle");  
 <Button Style="{StaticResource frbtn}"></Button>  

Every WPF element contains a property called resources, where WPF allows you to define more than one objects such as style, templates etc. for the element. It stores dictionary collection of resources and can hold any type of object with key value pair.

WPF dictionary is categorized into two type base the manipulation at run time that is Static Resource and Dynamic Resource. Dynamic Resource we use in a situation where we want to change the value of property at run time and the value of Static Resource is determined at the time of loading. Syntax for declaration of the both Static and Dynamic resource is same. But while using both has different syntax, because resource is defined static or dynamic at the time of consuming.

 <Button x:Name="btn" Content="Click Me" Click="Button_Click" Background="{DynamicResource brush}" Height="100" Width="100" />  
 <Button x:Name="btn" Content="Click Me" Click="Button_Click" Background="{StaticResource brush}" Height="100" Width="100" />  
When you make changes in dynamic resource at run time, it picks up this change. But in case of a static resource, if you make changes it will not reflect in User Interface.

Benefits of Resource in WPF:
  1. Resources let you define an object once and use it in several places in
    your markup. This streamlines your code and makes it marginally more efficient.
  2. Maintainability. Resources let you take low-level formatting details (such as font
    sizes) and move them to a central place where they’re easy to change. It’s the
    XAML equivalent of creating constants in your code.

  3. Once certain information is separated from the rest of your
    application and placed in a resource section, it becomes possible to modify it
    dynamically. For example, you may want to change resource details based on user
    preferences or the current language.


Hope reading this article you must have get ideas about WPF resource, how to define and consume resource and type of resource.

Thanks Kailash Chandra Behera


Popular posts from this blog

Generate QR Code in WPF

Introduction In my previous two blogs, we have discussed how to display generate and display various barcodes on the web page. In this blog, we are going to demonstrate how to Generate QR Code in the WPF application. Getting Started Here in the demonstration Generate QR Code in WPF , will generate QR code using third party library as there is not inbuilt library provided by Microsoft to generate QR code and will display in WPF image control, In the below, we will see the steps to display QR Code. As I mentioned in the above paragraph that there is no inbuild library provided by Microsoft to generate QR code, I have taken the help of the ZXing library which is a third party free library and available Nuget. This library provides various options to generate barcodes and QR Code from the user-friendly text. Generate QR Code in WPF Here are the steps to generate QR code and let's follow the steps to complete demonstrations. Demonstration:- Generate QR Code Open visual stud

WPF Binding

Introduction This blog describes WPF Binding and the measure elements exist with binding with XAML example in XAML and code-behind. Getting Started Binding helps in WPF to flow data from one object to another object, the object which fetches data is called source and the object which receives the data is called target. The Object a be a UI control or object of a class that means in binding you can bind a property of a class and property of another control to WPF UI controls as well. XAML Example <TextBox x:Name="sourceText" Grid.Row="0" /> <Button Grid.Row="1" Content="{Binding ElementName=sourceText, Path=Text}"/> Code Example Button btn=new Button(); Binding binding = new Binding("Text"); binding.Source = sourceText; btn.SetBinding(Button.ContentProperty, binding); In WPF binding has some measure properties or elements that we are using while developing application or projects, here we are going to d

Creating Application in Prism

Introduction This article explains an illustration of creating a windows application in Prism Library(WPF Prism). The solution includes recommended practices and techniques and is the basis for the procedures in Prism. This illustration created in the Visual Studio 2012, It can also developed in the visual studio 2008 and 2010, because wpf supports from .net framework 3.5 to latest version. Microsoft.Practices.Prism.dll. This assembly contains the implementation of the Prism Library core components such as modularity, logging services, communication services, and definitions for several core interfaces. It also contains the implementation of Prism Library components that target WPF applications, including commands, regions, and events. Microsoft.Practices.Prism.UnityExtensions.dll. This assembly contains base and utility classes you can reuse in applications built with the Prism Library that consume the Unity Application Block. For example, it contains a bootstrapper base class