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 (...

How to use Prism Region in WPF?


Step 1: Install Prism.Core,Prism.DryIoc (You can use any IOC like Prism.Unity),Prism.Wpf.
Step 2: Add the prism namespace to MainWindow.xaml  like below
                          xmlns:prism="http://prismlibrary.com/"
Step 3: Add ContentControl  to MainWindow  and initilize the RegionName
<Grid>
        <ContentControl prism:RegionManager.RegionName="MainRegion"/>
    </Grid>
Step 4: Implement IModule
 class MainModule : IModule
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {
           var region= containerProvider.Resolve<IRegionManager>();
            region.RegisterViewWithRegion("MainRegion", typeof(TabView));
           //TabView is the view  or UserControl which will inject to Region
        }

        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
         
        }
    }
Step 5: App class should inherit from PrismApplication
        Step 5.1: Modify App.xaml 
                          Add the prism namespace to App.xaml  like below
                          xmlns:prism="http://prismlibrary.com/"
        Step 5.2: Replace Application with prism:PrismApplication


          <prism:PrismApplication x:Class="WpfWithPrism.App"


             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfWithPrism"
             xmlns:prism="http://prismlibrary.com/">
      <prism:PrismApplication.Resources>
     
      </prism:PrismApplication.Resources>
     </prism:PrismApplication>

        Step 5.3: override CreateShell, RegisterTypes, ConfigureModuleCatalog Methods in                                           App.xaml.cs file like below.


 public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();//MainWindow is startup window
        }
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
         
        }
        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            base.ConfigureModuleCatalog(moduleCatalog);
            moduleCatalog.AddModule<MainModule>();
        }
    }

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