public void Exportar(System.Windows.Controls.DataGrid dg)
        {
            try
            {
                List <Object> itens = new List <object>((IEnumerable <object>)dg.ItemsSource);

                if (itens != null && itens.Count > 0)
                {
                    Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
                    dlg.FileName   = "dadosLista";
                    dlg.DefaultExt = ".rtf";
                    dlg.Filter     = "Arquivo RTF (.rtf)|*.rtf";

                    Nullable <bool> result = dlg.ShowDialog();

                    if (result == true)
                    {
                        FileStream fs = new FileStream(dlg.FileName, FileMode.Create, FileAccess.ReadWrite);
                        fs.Close();

                        RtfDocument rtfDoc = new RtfDocument(dlg.FileName);

                        StringBuilder sb = new StringBuilder();

                        foreach (DataGridColumn coluna in dg.Columns)
                        {
                            sb.Append(coluna.Header.ToString());
                            sb.Append("\t");
                        }
                        RtfCharFormat rtfCharFormat = new RtfCharFormat();
                        rtfCharFormat.Bold = true;
                        rtfCharFormat.Size = 14;

                        rtfDoc.AddText(sb.ToString(), rtfCharFormat);
                        rtfDoc.AddNewLine();
                        rtfDoc.ResetCharFormat();
                        sb.Clear();

                        foreach (Object item in itens)
                        {
                            foreach (DataGridColumn coluna in dg.Columns)
                            {
                                Binding  binding       = (Binding)((DataGridBoundColumn)coluna).Binding;
                                string   path          = binding.Path.Path;
                                string[] hierarquiaObj = path.Split('.');

                                Object itemAux = item;
                                for (int i = 0; i < hierarquiaObj.Length - 1; i++)
                                {
                                    itemAux = itemAux.GetType().GetProperty(hierarquiaObj[i]).GetValue(itemAux, null);
                                }

                                string prop     = hierarquiaObj[hierarquiaObj.Length - 1];
                                string conteudo = "";
                                if (itemAux.GetType().GetProperty(prop).GetValue(itemAux, null) != null)
                                {
                                    conteudo = itemAux.GetType().GetProperty(prop).GetValue(itemAux, null).ToString();
                                }
                                sb.Append(conteudo);
                                sb.Append("\t");
                            }
                            rtfDoc.AddText(sb.ToString());
                            rtfDoc.AddNewLine();
                            sb.Clear();
                        }
                        rtfDoc.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }