private void InitializeFilterView(FilterView filterview)
        {
            var okButton = FindControl.FindChild <Button>(filterview, "btnOk");

            okButton.Click += OnPopupButtonClick;

            var cancelButton = FindControl.FindChild <Button>(filterview, "btnCancel");

            cancelButton.Click += OnPopupButtonClick;

            var clearButton = FindControl.FindChild <Button>(filterview, "btnClear");

            clearButton.Click += OnPopupButtonClick;

            filterview.LostFocus -= PopLostFocus;
            filterview.LostFocus += PopLostFocus;
            filterview.Focus();
            filterview.UpdateLayout();
        }
        private void EvaluateDatagridColumn()
        {
            DataGridRow rowContainer   = FindDataGridControl.GetRow(this, 0);
            Type        itemSourceType = (this.ItemsSource as IEnumerable).AsQueryable().ElementType;

            foreach (ExtendedTemplateColumn col in this.Columns)
            {
                col.FieldNameType     = ReflectionHelper.GetPropertyType(col.FieldName, itemSourceType);
                col.IsNullableBinding = (col.FieldNameType == typeof(string)) || (Nullable.GetUnderlyingType(col.FieldNameType) != null);
                if (col.IsDefaultBinding)
                {
                    continue;
                }
                var datagridCell = FindDataGridControl.GetCell(this, 0, col.DisplayIndex);
                var framework    = FindControl.FindChild <FrameworkElement>((ContentPresenter)datagridCell.Content, string.Empty);

                var textBlock = framework as TextBlock;
                col.IsDefaultBinding = textBlock == null;
            }
        }
        private void AutoFilterMouseDown(object sender, MouseButtonEventArgs e)
        {
            var columnHeader = FindControl.FindParent <DataGridColumnHeader>((ContentControl)sender);

            _currentColumn = columnHeader.Column as ExtendedTemplateColumn;
            if (_currentColumn == null)
            {
                return;
            }

            var popup = FindControl.FindChild <Popup>(columnHeader, "popupColumnFilter");

            if (popup == null)
            {
                return;
            }
            popup.IsOpen = true;

            var popupSize = new Size(popup.ActualWidth, popup.ActualHeight);
            var position  = new Point {
                X = columnHeader.ActualWidth - 19, Y = columnHeader.ActualHeight
            };

            popup.PlacementRectangle = new Rect(position, popupSize);

            var mainGrid = FindControl.FindParent <ExtendedDatagridControl>(popup);

            mainGrid.FilterHelper.CurrentColumnInfo = new Model.ColumnInfo()
            {
                Column = _currentColumn
            };

            var filterViewControl = FindControl.FindChild <FilterView>(popup.Child, "ColumnValuesList");

            filterViewControl.ListItems = mainGrid.FilterHelper.GetDistinctColumnValues();
            InitializeFilterView(filterViewControl);
        }