title: Adding Icon to TreeViewItem
body: <p>I have been asked to update a TreeVeiw in a WPF application that is built on the fly from a class object. As you will see treeveiw is not bound to anything. Below is not my code!!</p>
  
  <p><code>&lt;TreeView Grid.Row="0" HorizontalAlignment="Stretch" Name="tvLocations" VerticalAlignment="Stretch" SelectedItemChanged="tvLocations_SelectedItemChanged" /&gt;</code></p>
  
  <pre><code>    private void BuildTreeVeiw(Location locationList)
      {
          this.Title = _selectedLoc.Name +  " - Locations";
          tvLocations.Items.Clear();
  
          TreeViewItem tvitem;
  
          tvitem = new TreeViewItem() { Header = locationList.Name, Uid = locationList.Id.ToString() };
  
          if (locationList.Printers != null)
          {
              TreeViewItem tvprnitem = new TreeViewItem() { Header = "Printers" };
              tvprnitem.FontWeight = FontWeights.Regular;
  
              foreach (Printer sprinters in locationList.Printers)
              {
                  TreeViewItem psubitem = new TreeViewItem() { Header = sprinters.Name, Uid = sprinters.Id.ToString() };
                  TreeViewItem psubitem1 = new TreeViewItem() { Header = String.Concat("UNC: ", sprinters.UNC) };
                  psubitem.Items.Add(psubitem1);
                  tvprnitem.Items.Add(psubitem);
              }
              tvitem.Items.Add(tvprnitem);
          }
  
          foreach (Location loc in locationList.Children)
          {
              AddChildren(loc, ref tvitem);
          }
          tvLocations.Items.Add(tvitem);
      }
  
      private void AddChildren(Location child, ref TreeViewItem tvi)
      {
          TreeViewItem tvitem;
  
          tvitem = new TreeViewItem() { Header = child.Name, Uid = child.Id.ToString() };
          if (child.Name ==  _currentLocation.Name)
          {
              tvitem.FontWeight = FontWeights.Bold;
          }
  
          if (child.Printers != null)
          {
              TreeViewItem tvprnitem = new TreeViewItem() { Header = "Printers" };
              tvprnitem.FontWeight = FontWeights.Regular;
  
              foreach (Printer sprinters in child.Printers)
              {
                  TreeViewItem psubitem = new TreeViewItem() { Header = sprinters.Name, Uid = sprinters.Id.ToString() };
                  TreeViewItem psubitem1 = new TreeViewItem() { Header = String.Concat("UNC: ", sprinters.UNC) };
                  psubitem.Items.Add(psubitem1);
                  tvprnitem.Items.Add(psubitem);
              }
              tvitem.Items.Add(tvprnitem);
          }
          if (child.Children != null)
          {
              foreach (Location loc in child.Children)
              {
                  AddChildren(loc, ref tvitem);
              }
          }
  
          tvi.Items.Add(tvitem);
  
      }
  </code></pre>
  
  <p>This builds the tree correctly and all I have been asked to do is add an icon to the TreeViewItem.  The icon will be a different depending on whether it is a location or a printer within that location. </p>
  
  <p>I cannot see how to add icons to TreeViewItems can anyone point me in the right direction? </p>