title: How to transfer auto generated grid to grid with individual columns
body: <p>Actually I am using the auto generated grid function like this:</p>
  
  <pre><code>&lt;DataGrid ItemsSource="{Binding UserDataObject}" Width="786" /&gt;
  </code></pre>
  
  <p>Now I'd like to specify the individual columns like</p>
  
  <pre><code>&lt;DataGrid&gt;
      &lt;Column Header="ID" /&gt;
      &lt;Column Header="Username" /&gt;
      &lt;Column Header="Role"&gt;--Show Role As Selector--&lt;/Column&gt;
  &lt;/DataGrid&gt;
  </code></pre>
  
  <p>How does this work in WPF?</p>
  
  <p>Explanations:</p>
  
  <p>My UserDataObject is defined as</p>
  
  <pre><code>ObservableCollection&lt;User&gt; mUserDataObject = new ObservableCollection&lt;User&gt;();
  
  public ObservableCollection&lt;User&gt; UserDataObject
      {
          get
          {
              return mUserDataObject;
          }
      }
  
      //User user = new User("ID", "Username", "Password", "Role");
  
      public class User : INotifyPropertyChanged
      {
          public event PropertyChangedEventHandler PropertyChanged;
  
          // Attributes
          private int? _ID;
          private string _Username;
          private string _Password;
          private string _Role;
  
          // Constructors
          public User()
          {
          }
  
          public User(int pID, string pUsername, string pPassword, string pRole)
          {
              this.ID = pID;
              this.Username = pUsername;
              this.Password = pPassword;
              this.Role = pRole;
          }
  
          // Getter and Setter
          public int? ID
          {
              get { return _ID; }
              set { _ID = value; OnPropertyChanged("ID"); }
          }
  
          public string Username
          {
              get { return _Username; }
              set { _Username = value; OnPropertyChanged("Username"); }
          }
  
          public string Password
          {
              get { return _Password; }
              set { _Password = value; OnPropertyChanged("Password"); }
          }
  
          public string Role
          {
              get { return _Role; }
              set { _Role = value; OnPropertyChanged("Role"); }
          }
  
          // Create the OnPropertyChanged method to raise the event
          protected void OnPropertyChanged(string name)
          {
              PropertyChangedEventHandler handler = PropertyChanged;
              if (handler != null)
              {
                  handler(this, new PropertyChangedEventArgs(name));
              }
          }
      }
  </code></pre>
  
  <p>Additionally, how can I add an event listener that registers changes in one cell?</p>