title: Dynamic columns with Silverlight DataGrid
body: <p>I'm trying to add columns to a Silverlight DataGrid but having problems. In my View (I'm using Prism) I can add the columns in the constructor no problem, this works fine -</p>
  
  <pre><code>public MyView()
  {
     InitializeComponent();
     myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
  }
  </code></pre>
  
  <p>However if I attempt to add a column when the DataContext is set the column is added (I can see Columns.Count increase when debugging) however the new column isn't rendered.</p>
  
  <pre><code>public IMyViewModel ViewModel
  {
      get { return DataContext as IMyViewModel ; }
      set
      {
          DataContext = value;
          myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
      }
  }
  </code></pre>
  
  <p>Now, I know this does NOT respect the MVVM paradigm. This is not how I'm intending to write the code however I will need some crappy code like this in the View to set up the columns when the ItemSource that's bound to the DataGrid changes. You see the columns will grow and shrink depending on the user's input and I need to add / remove the columns and set bindings accordingly.</p>
  
  <p>I have also tried the following thinking it was because it wasn't executing on the UI thread -</p>
  
  <pre><code>myDatagrid.Dispatcher.BeginInvoke(() =&gt;
  {
      myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
  });
  </code></pre>