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 show xml data in DataGrid?

XMLData.xml

<Students>
  <Student>
    <Roll>1</Roll>
    <Name>Kumar</Name>
  </Student>
  <Student>
    <Roll>2</Roll>
    <Name>Harsh</Name>
  </Student>
</Students>

Create a class for xml data
public partial class Student
    {

        public int Roll { getset; }
      
        
        public string Name { getset; }
    }
Code To get data from xml file
XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<Student>)newXmlRootAttribute("Students"));//here Student is type and Students is root of xml
         
            using (StreamReader reader = newStreamReader(@"D:\XMLData.xml"))
            {
                //Deserilize the xml file and assign to collection
                LstStudents =(ObservableCollection<Student>)serializer.Deserialize(reader);
            };
private ObservableCollection<Student> _lstStudents=new ObservableCollection<Student>();

        public ObservableCollection<Student> LstStudents
        {
            get { return _lstStudents; }
            set {SetProperty(ref _lstStudents , value); }
        }

Bind LstStudents to DataGrid
<DataGrid ItemsSource="{Binding LstStudents}"Width="200" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Roll"Binding="{Binding Roll}"  />
                    <DataGridTextColumn Header="Name"Binding="{Binding Name}"  />
                </DataGrid.Columns>
              
            </DataGrid>

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