Binding RadioButtons with Gender Property in WPF Using Value Converter

Many WPF developers face a common problem when working with RadioButtons . They try to bind RadioButtons with a Gender property, but the binding does not work as expected . Why does this happen? Because RadioButtons work with true/false values , but in real applications, Gender is stored as meaningful values like: Male Female So the big question is: How do we connect a true/false UI control with a Male/Female data value? Why RadioButton Binding Fails A RadioButton uses the IsChecked property, and this property accepts only: true false But your Gender property is usually: a string ( "Male" , "Female" ) or an enum So the UI value and the data value are different types . This mismatch is the root cause of the problem. The Solution: Value Converter WPF provides a powerful feature called a Value Converter . What is a Value Converter? A Value Converter converts one value type into another. In our case: Convert Gender (...

What is IoC Container?

 IoC Container

IoC Container is a framework for implementing automatic dependency injection.
before I explain IoC Container first lets know what is dependency injection

Dependency Injection

It is a design pattern used to implement IoC. It allows the creation of dependent objects outside of a class and provides those objects to a class through different ways. 


The Dependency Injection pattern involves three things which are client, service and the injector so, there will be 
three types of classes involves in this process.

  1. Client Class: The client class is a class which depends on the service class.
  2. Service Class: The service class is a class that provides service to the client class.
  3. Injector Class: The injector class injects the service class object into the client class.
The injector class injects dependencies in three ways: through a constructor, or through a property, or through a method. so, there are three types of Dependency Injection which are:

  1. Constructor Injection: In the constructor injection, the injector supplies the dependency through the client class constructor.
  2. Property Injection: In the property injection, the injector supplies the dependency through a public property of the client class.
  3. Method Injection: In the method injection, the client class implements an interface which declares the method(s) to supply the dependency and the injector uses this interface to supply the dependency to the client class.
Let come back to the IoC Container.

IoC Container manages object creation and it's life-time, and also injects dependencies to the class. The IoC container creates an object of the specified class and also injects all the dependency objects through a constructor or a property or a method at run time and disposes it at the appropriate time. This is done so that we don't have to create and manage objects manually.

All the containers must provide easy support for the following DI lifecycle.

Register: The container must know which dependency to instantiate when it encounters a particular type. This process is called registration. Basically, it must include some way to register type-mapping.
Resolve: When using the IoC container, we don't need to create objects manually. The container does it for us. This is called resolution. The container must include some methods to resolve the specified type, the container creates an object of the specified type, injects the required dependencies if any and returns the object.
Dispose: The container must manage the lifetime of the dependent objects. Most IoC containers include different lifetime managers to manage an object's lifecycle and dispose it.

There are many open source containers available for .NET. Some are listed below.
DryIoc
Unity
StructureMap
Ninject
Autofac
Simple Injector
Light Inject




Comments

Popular posts from this blog

Filter DataGrid and ListView in wpf using ICollectionView

Pagination of DataGrid in WPF using MVVM

How to Create TabControl using Prism Region