Treeview with data Grid and context menu
output


start Program


.cs

using Microsoft.SharePoint;
using Microsoft.SharePoint.Client;
using System.Text.RegularExpressions;

namespace SilverligtUsertree_RK
{
    public partial class MainPage : UserControl
    {
        ClientContext site;
        List listobj;
        ListItemCollection listcoll;
        double a, b;
        string userid = "";
        string loginuserid;

        public MainPage()
        {
            try
            {
                InitializeComponent();
                site = new ClientContext("sitename");
                site.Load(site.Web);

                listobj = site.Web.Lists.GetByTitle("User Details_RK");
                site.Load(listobj);

                CamlQuery cam = new CamlQuery();
                cam.ViewXml = "<View/>";

                listcoll = listobj.GetItems(cam);
                site.Load(listcoll);
                site.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(sucess), null);

                ContextMenu contex = new ContextMenu();
                contex.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                contex.VerticalAlignment = System.Windows.VerticalAlignment.Top;

                MenuItem Edit = new MenuItem();
                Edit.Header = "Edit";
                contex.Items.Add(Edit);
                MenuItem delete = new MenuItem();
                delete.Header = "Delete";
                contex.Items.Add(delete);
                MenuItem exit = new MenuItem();
                exit.Header = "Exit";
                contex.Items.Add(exit);

                Edit.Click += new RoutedEventHandler(Edit_Click);
                delete.Click += new RoutedEventHandler(delete_Click);
                exit.Click += new RoutedEventHandler(exit_Click);
                grid1.Children.Add(contex);
                grid1.Visibility = System.Windows.Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "error in mainpage");
            }

        }

        void exit_Click(object sender, RoutedEventArgs e)
        {
            grid1.Visibility = Visibility.Collapsed;
            // this.Content = new MainPage();
        }
        public void sucess(object sender, ClientRequestSucceededEventArgs args)
        {
            Dispatcher.BeginInvoke(treeview);
        }
        public void treeview()
        {
            try
            {
                // didnot look for existing item because userid is unique in list


                TreeViewItem tvitem = new TreeViewItem();//treeview the list
                tvitem.Header = "UserID";
                treeView1.Items.Add(tvitem);

                foreach (var item in listcoll)
                {
                    TreeViewItem tvi = new TreeViewItem();
                    string useridlist = Convert.ToString(item["UserID"]);
                    tvi.Header = useridlist;
                    tvitem.Items.Add(tvi);
                    tvi.MouseRightButtonDown += new MouseButtonEventHandler(tvi_MouseRightButtonDown);
                    tvi.MouseLeftButtonUp += new MouseButtonEventHandler(tvi_MouseLeftButtonUp);
                }

           
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "treeview");
            }
        }

        void tvi_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            try
            {
                TreeViewItem treevie = sender as TreeViewItem;
                loginuserid = treevie.Header.ToString();

                List<_oneuserclass> userdatagrid = new List<_oneuserclass>();//creating list our own(see below)
                foreach (ListItem item in listcoll)
                {
                    //MessageBox.Show(loginuserid + "==" + Convert.ToString(item["UserID"]));
                    if (loginuserid == Convert.ToString(item["UserID"]))
                    {

                        String result = Regex.Replace(Convert.ToString(item["Address"]), @"<[^>]*>", String.Empty);//removing the all html tags..........
                        userdatagrid.Add(new _oneuserclass
                        {

                            FirstName = Convert.ToString(item["First_x0020_Name"]),
                            LastName = Convert.ToString(item["Last_x0020_Name"]),
                            UserID = Convert.ToString(item["UserID"]),
                            Qualification = Convert.ToString(item["Qualification"]),
                            Address = result,
                            DateofBirth = Convert.ToDateTime(item["DateOfBirth"]).ToString("dd/MM/yyyy"),
                            ID = Convert.ToInt16(item["ID"]),
                            Password = Convert.ToString(item["PassWord"])

                        });
                    }

                    dataGrid1.ItemsSource = userdatagrid;
                }

            }
            catch (Exception ex)
            {
                //MessageBox.Show("error in edit" + ex.Message);
            }
        }

        void tvi_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            TreeViewItem treevie = sender as TreeViewItem;
            userid = treevie.Header.ToString();
            //  MessageBox.Show(userid);

            e.Handled = true;
            a = e.GetPosition(treeView1).X;
            b = e.GetPosition(treeView1).Y;
            grid1.Margin = new Thickness(a, b, 0, 0);
            grid1.Visibility = System.Windows.Visibility.Visible;
        }

        private void Edit_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                grid1.Visibility = System.Windows.Visibility.Collapsed;
                EditingChildWindow1 editchild = new EditingChildWindow1(userid);//name of child window
                editchild.txtuserid.Text = userid;
                editchild.txtuserid.IsEnabled = true;//to keep values as default
                editchild.Show();
            }
            catch (Exception ex)
            {
            }
        }
        private void delete_Click(object sender, RoutedEventArgs e)
        {
            grid1.Visibility = System.Windows.Visibility.Collapsed;
            MessageBoxResult result = MessageBox.Show("Are You sure want to delete the item?" + userid, "Delete item", MessageBoxButton.OKCancel);
            if (result == MessageBoxResult.OK)
            {
                foreach (ListItem item in listcoll)
                {
                    string deleteuseritem = Convert.ToString(item["UserID"]);
                    if (deleteuseritem == userid)
                    {
                        int id = Convert.ToInt16(item["ID"]);
                        ListItem litem = listobj.GetItemById(id);
                        litem.DeleteObject();
                        site.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(succed), null);
                        MessageBox.Show("Hee..! hee..! hee..! your unwanted item is deleted...!");
                        this.Content = new MainPage();
                    }
                }
            }
        }
        public void succed(object sender, ClientRequestSucceededEventArgs arg)
        {

        }
        public class _oneuserclass
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Password { get; set; }
            public string UserID { get; set; }
            public string Qualification { get; set; }
            public string Address { get; set; }
            public string DateofBirth { get; set; }
            public int ID { get; set; }
        }

    }
}


Editing 


.cs
using Microsoft.SharePoint;
using Microsoft.SharePoint.Client;
using System.Text.RegularExpressions;

namespace SilverligtUsertree_RK
{
    public partial class EditingChildWindow1 : ChildWindow
    {
        ClientContext site;
        List listobj;
        ListItemCollection listcoll;
        string _userid;
        int ID = 0;
        public EditingChildWindow1(string userid)
        {
            InitializeComponent();
            _userid = userid;

            site = new ClientContext("sitename");
            site.Load(site.Web);

            listobj = site.Web.Lists.GetByTitle("User Details_RK");
            site.Load(listobj);

            CamlQuery cam = new CamlQuery();
            cam.ViewXml = "<View/>";

            listcoll = listobj.GetItems(cam);
            site.Load(listcoll);
            site.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(sucess), null);
            //this.DialogResult = true;
        } 
                private void sucess(object sender, ClientRequestSucceededEventArgs arg)
        {
            Dispatcher.BeginInvoke(editchid);
        }
        private void editchid()
        {
            ComboBoxItem combo = combo_qualifi.SelectedItem as ComboBoxItem;
            foreach (ListItem item in listcoll)
            {
                String result2 = Regex.Replace(Convert.ToString(item["Address"]), @"<[^>]*>", String.Empty);
                try
                {
                    string useridcheck = Convert.ToString(item["UserID"]);
                    string fname = Convert.ToString(item["First_x0020_Name"]);
                    string lname = Convert.ToString(item["Last_x0020_Name"]);
                    string pwd = Convert.ToString(item["PassWord"]);
                    DateTime dt = Convert.ToDateTime(item["DateOfBirth"]);
                    string qualif = Convert.ToString(item["Qualification"]);
                    string address = result2;
                   
                    if (useridcheck == _userid)
                    {
                        txtfirsrname.Text = fname;
                        txtlastname.Text = lname;
                        txtpassowrd.Text = pwd;
                        txtdateofbirth.Text =Convert.ToString(dt);
                        txtaddress.Text = address;
                        combo_qualifi.Items.Insert(0, qualif); combo_qualifi.SelectedIndex = 0;
                    }
                }
                catch { }
            }
          
        }
        
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            //just inserting into the list
            ComboBoxItem combo = combo_qualifi.SelectedItem as ComboBoxItem;//we cannto add combox items directly so we use ComboBoxItem
            foreach (var item in listcoll)
            {
                try
                {
                    string useridcheck = Convert.ToString(item["UserID"]);

                    if (useridcheck == _userid)
                    {
                        int id = Convert.ToInt32(item["ID"]);
                        ID = id;
                        break;
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show("insert properly" + ex.Message);
                }
            }
            ListItem items = listobj.GetItemById(ID);
            items["First_x0020_Name"] = txtfirsrname.Text;
            items["Last_x0020_Name"] = txtlastname.Text;
            items["UserID"] = txtuserid.Text;
            items["PassWord"] = txtpassowrd.Text;
            items["DateOfBirth"] = Convert.ToDateTime(txtdateofbirth.Text);
            items["Qualification"] = Convert.ToString(combo.Content);
            items["Address"] = txtaddress.Text;
            items.Update();
            site.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(sucessced), null);
            this.DialogResult = true;
        }
               public void sucessced(object sender, ClientRequestSucceededEventArgs arg)
        {
        }
        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }
        //private void button1_Click(object sender, RoutedEventArgs e)
        //{
        //    txtfirsrname.Text = string.Empty;
        //    txtlastname.Text = string.Empty;
        //    txtpassowrd.Password = string.Empty;
        //    txtdateofbirth.Text = string.Empty;
        //    txtqualification.SelectedItem = string.Empty;
        //    txtaddress.Text = string.Empty;
        //}

    public void succed(object sender, ClientRequestSucceededEventArgs arg)
    {
    }        
    }
}

Chart dynamically==================
<UserControl x:Class="Silverligchartdynamically_RK.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">

    </Grid>
</UserControl>


.cs



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Controls.DataVisualization.Charting;

namespace Silverligchartdynamically_RK
{
    public partial class MainPage : UserControl
    {
        List<Sale> addsale;
        public MainPage()
        {
            InitializeComponent();
            addsale = new List<Sale>();
            addsale.Add(new Sale { name="soap" ,sales=200});
            addsale.Add(new Sale {name="vegetables",sales=300 });
            addsale.Add(new Sale { name = "wheat", sales = 150 });

            Chart chartobj = new Chart();
            chartobj.Height =400;
            chartobj.Width = 400;
            //chartobj.VerticalAlignment = MouseLeftButtonDown;
            ColumnSeries colunseribj = new ColumnSeries();
            colunseribj.ItemsSource = addsale;
            colunseribj.IndependentValuePath = "name";
            colunseribj.DependentValuePath = "sales";
            chartobj.Series.Add(colunseribj);
            LayoutRoot.Children.Add(chartobj);


            //Chart chartobj2 = new Chart();
            //chartobj2.Height = 200;
            //chartobj2.Width = 200;
            //ColumnSeries colunseribj2 = new ColumnSeries();
            //PieSeries pie = new PieSeries();
            //pie.ItemsSource = addsale;
            //pie.IndependentValuePath = "name";
            //pie.DependentValuePath = "sales";
            //chartobj2.Series.Add(pie);
            //LayoutRoot.Children.Add(chartobj2);
            
        }
    }

    public class Sale
    {

        public string name { get; set; }
        public int sales { get; set; }
    }
}
CHart demo

<UserControl x:Class="Silverlighchartdemo.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">

    <Grid x:Name="LayoutRoot" Background="White">
        <sdk:DataGrid AutoGenerateColumns="False" Height="126" HorizontalAlignment="Left" Margin="37,50,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="290" />
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="114,19,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
        <toolkit:Chart HorizontalAlignment="Left" Margin="96,223,0,0" Name="chart1" Title="Chart Title" VerticalAlignment="Top">
            <toolkit:ColumnSeries DependentValuePath="X" IndependentValuePath="Y">
                <toolkit:ColumnSeries.ItemsSource>
                    <PointCollection>
                        <Point>1,10</Point>
                        <Point>2,20</Point>
                        <Point>3,30</Point>
                        <Point>4,40</Point>
                    </PointCollection>
                </toolkit:ColumnSeries.ItemsSource>
            </toolkit:ColumnSeries>
        </toolkit:Chart>
    </Grid>
</UserControl>

.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.SharePoint.Client;
using System.Windows.Controls.DataVisualization.Charting;

namespace Silverlighchartdemo
{
    public partial class MainPage : UserControl
    {
           public string webFullURL = @"URL";

        
             List stud = null;
             ListItemCollection lists = null;
             List<Student> students = new List<Student>();

       
        private delegate void UpdateUIMethod(List<Student> studentList);

        public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

       
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            ClientContext spContext = ClientContext.Current;
            if (spContext == null)
            {
                spContext = new ClientContext(webFullURL);
                spContext.Load(spContext.Web);
                stud = spContext.Web.Lists.GetByTitle("StudentInfo");
                spContext.Load(stud);
                CamlQuery query = new CamlQuery();
                string strQuery = @"<View><ViewFields><FieldRef Name='AssignedTo'/>
<FieldRef Name='Name'/><FieldRef Name='Mathematics'/> 
<FieldRef Name='Physics'/><FieldRef Name='Chemistry'/>
<FieldRef Name='Computer'/></ViewFields></View>";
                query.ViewXml = strQuery;
                lists = stud.GetItems(query);
                spContext.Load(lists);
                spContext.ExecuteQueryAsync(OnSiteLoadSuccess, null);
            }
        }
        private void OnSiteLoadSuccess(object sender, ClientRequestSucceededEventArgs e)
        {
            foreach (ListItem item in lists)
            {
                Student student = new Student();
                student.Name = item["Name"].ToString();
                student.Mathematics = Int32.Parse(item["Mathematics"].ToString());
                student.Physics = Int32.Parse(item["Physics"].ToString());
                student.Chemistry = Int32.Parse(item["Chemistry"].ToString());
                student.Computer = Int32.Parse(item["Computer"].ToString());
                students.Add(student);
            }

            UpdateUIMethod up = new UpdateUIMethod(updateUI);
            this.Dispatcher.BeginInvoke(up, students);
        }

       
        private void updateUI(List<Student> tasks)
        {
            dataGrid1.ItemsSource = tasks;
            dataGrid1.SelectionMode = DataGridSelectionMode.Single;
        }
    
        public class Student
{
     public string Name { get; set; }
     public int Mathematics { get; set; }
     public int Physics { get; set; }
     public int Chemistry { get; set; }
     public int Computer { get; set; }
}

    }
}