The blog has moved to the new site F10Debug.com
Showing posts with label WPF. Show all posts
Showing posts with label WPF. Show all posts

Friday, July 15, 2011

Hide & Un-Hide DataGrid Column(s) In WPF

MainWindow.xaml

<window height="350" title="MainWindow" width="525"  x:class="TryWPF.MainWindow"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xam/presentation">
<grid>
<datagrid autogeneratedcolumns="dataGrid1_AutoGeneratedColumns" canuseraddrows="True" canuserdeleterows="True" canuserreordercolumns="True" horizontalalignment="Left" margin="229,12,0,0" name="dataGrid1" verticalalignment="Top" mouserightbuttonup="dataGrid1_MouseRightButtonUp">
</datagrid>
</grid>
</window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Sybase.Data.AseClient;
using System.Data;
using System.IO;
namespace TryWPF
{

 public partial class MainWindow : Window
    {
       //context menu for column

        MenuItem menuItem;
        ContextMenu cxMenu;

        AseDataAdapter da = null;

        AseConnection conn = null;

        DataSet DS = null;

        public MainWindow()
        {
            try
            {
                InitializeComponent();

                Bind_Grid();
            }
            catch(Exception ex)
            {
                ex.ToString();
            }
        }

        void Bind_Grid()
        {
            try
            {

                DS = new DataSet();
                conn = new AseConnection(
                    "Data Source=IFLMUD6DLB8JN:5000;Initial 
                     Catalog=master;User ID = sa;   Password=;");

                // 2. Open the connection
                conn.Open();

                // 3. Pass the connection to a command object
                AseCommand cmd = new AseCommand();

                cmd.CommandText = "sp_who";

                cmd.CommandType = CommandType.StoredProcedure;

                //cmd = new AseCommand(cmd.CommandText, conn);

                da = new AseDataAdapter(cmd.CommandText, conn);

                da.Fill(DS);

                dataGrid1.ItemsSource = DS.Tables[0].DefaultView;

                dataGrid1.AutoGeneratedColumns +=
                                                            new EventHandler(dataGrid1_AutoGeneratedColumns);

            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            finally
            {

                // 5. Close the connection
                if (conn != null)
                {
                    conn.Close();
                }
            }
        }

void menuItem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem item = sender as MenuItem;

            if (item.IsChecked)
            {
                item.IsChecked = false;
            }
            else
            {
                item.IsChecked = true;
            }
        }

        void menuItem_Checked(object sender, RoutedEventArgs e)
        {
            MenuItem item = sender as MenuItem;

            dataGrid1.AutoGeneratedColumns -= new EventHandler(dataGrid1_AutoGeneratedColumns);

            List<string> menuList = new List<string>();

            menuList.Clear();

            foreach (MenuItem menuItem in cxMenu.Items)
            {
                if (menuItem.IsChecked == false)
                {
                    menuList.Add(menuItem.Items.ToString());
                }
            }

            dataGrid1.ItemsSource = null;

            dataGrid1.ItemsSource = DS.Tables[0].DefaultView;

            foreach (string menuItem in menuList)
            {
                foreach (DataGridColumn column in dataGrid1.Columns)
                {
                    if (column.Header.ToString() == menuItem)
                    {
                        dataGrid1.Columns.Remove(column);
                        break;
                    }
                }
            }
        }

        void menuItem_Unchecked(object sender, RoutedEventArgs e)
        {
            MenuItem item = sender as MenuItem;

            foreach (DataGridColumn column in dataGrid1.Columns)
            {
                if (column.Header.ToString().Contains(item.Header.ToString()))
                {
                    dataGrid1.Columns.Remove(column);
                    break;
                }
            }
        }
     
        private void dataGrid1_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            DependencyObject DepObj = (DependencyObject)e.OriginalSource;

            while ((DepObj != null) && !(DepObj is DataGridColumnHeader))
            {
                DepObj = VisualTreeHelper.GetParent(DepObj);

                if (DepObj == null)
                {
                    return;
                }

                if (DepObj is DataGridColumnHeader)
                {
                    DataGridColumnHeader dgCHeader = DepObj as DataGridColumnHeader;

                    dgCHeader.ContextMenu = cxMenu;
                }

                if (DepObj is DataGridCell)
                {

                    while ((DepObj != null) && !(DepObj is DataGridRow))
                    {
                        DepObj = VisualTreeHelper.GetParent(DepObj);
                    }
                    DataGridRow dgRow = DepObj as DataGridRow;
                    dgRow.ContextMenu = cxMenuRow;
                }
            }

           
        }

        private void dataGrid1_AutoGeneratedColumns(object sender, EventArgs e)
        {
            cxMenu = new ContextMenu();

            foreach (DataGridColumn item in dataGrid1.Columns)
            {
                menuItem = new MenuItem();

                menuItem.Header = item.Header;

                menuItem.IsChecked = true;

                cxMenu.Items.Add(menuItem);

                menuItem.Click += new RoutedEventHandler(menuItem_Click);

                menuItem.Checked += new RoutedEventHandler(menuItem_Checked);

                menuItem.Unchecked += new RoutedEventHandler(menuItem_Unchecked);
            }
        }

}
}


Thursday, June 2, 2011

XAML PARSE EXCEPTION was unhandled in WPF


If this type of error comes while running WPF application then follow following steps.

1) Check which version of .net framework install in the GAC (gacutil.exe), if the version install in the gac is not 4.0 then re-install 4.0 into gac or remove installed version and install new version 4.0

Or do this

2) check in control panel which versions of .net framework are install in the machine, if machine have installed versions 2.0, 3.0, 3.5 then remove all and install only version 4.0.