Example #1
0
 internal static void ProvideContextForObject(DependencyObject context, TreeGridColumn newValue)
 {
     if (context != null)
     {
         MSInternal.ProvideSelfAsInheritanceContext(context, newValue, null);
     }
 }
        /// <summary>
        /// 为指定列生成 header 并添加到 InternalChildren 的索引 index 处。
        /// </summary>
        /// <param name="column"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        private TreeGridColumnHeader CreateAndInsertHeader(TreeGridColumn column, int index)
        {
            object header = column.Header;
            var    gridViewColumnHeader = header as TreeGridColumnHeader;

            if (header != null)
            {
                var dependencyObject = header as DependencyObject;
                if (dependencyObject != null)
                {
                    var visual = dependencyObject as Visual;
                    if (visual != null)
                    {
                        var visual2 = VisualTreeHelper.GetParent(visual) as Visual;
                        if (visual2 != null)
                        {
                            if (gridViewColumnHeader != null)
                            {
                                var gridViewHeaderRowPresenter = visual2 as TreeGridHeaderRowPresenter;
                                if (gridViewHeaderRowPresenter != null)
                                {
                                    MSInternal.RemoveNoVerify(gridViewHeaderRowPresenter.UIChildren, gridViewColumnHeader);
                                }
                            }
                            else
                            {
                                var gridViewColumnHeader2 = visual2 as TreeGridColumnHeader;
                                if (gridViewColumnHeader2 != null)
                                {
                                    gridViewColumnHeader2.ClearValue(ContentControl.ContentProperty);
                                }
                            }
                        }
                    }
                    var parent = LogicalTreeHelper.GetParent(dependencyObject);
                    if (parent != null)
                    {
                        MSInternal.RemoveLogicalChild(parent, header);
                    }
                }
            }

            if (gridViewColumnHeader == null)
            {
                gridViewColumnHeader = new TreeGridColumnHeader();
                gridViewColumnHeader.IsInternalGenerated = true;
            }

            gridViewColumnHeader.SetValue(TreeGridColumnHeader.ColumnPropertyKey, column);

            this.HookupItemsControlKeyboardEvent(gridViewColumnHeader);

            base.UIChildren.Insert(index, gridViewColumnHeader);

            this.UpdateHeader(gridViewColumnHeader);

            this._gvHeadersValid = false;

            return(gridViewColumnHeader);
        }
Example #3
0
 internal static void RemoveContextFromObject(DependencyObject context, TreeGridColumn oldValue)
 {
     if (context != null && MSInternal.GetInheritanceContext(oldValue) == context)
     {
         MSInternal.ProvideSelfAsInheritanceContext(context, oldValue, null);
     }
 }
Example #4
0
        private void FindViewPort(TreeGridRow row)
        {
            var itemsControl = row.ParentItemsControl;

            if (itemsControl != null)
            {
                var scrollViewer = MSInternal.GetScrollHost(itemsControl);
                if (scrollViewer != null && scrollViewer.CanContentScroll)
                {
                    var itemsHost = MSInternal.GetItemsHost(itemsControl);
                    if (itemsHost is VirtualizingPanel)
                    {
                        this._viewPort = scrollViewer.Template.FindName(PART_ScrollContentPresenter, scrollViewer) as FrameworkElement;
                        if (this._viewPort == null)
                        {
                            this._viewPort = scrollViewer;
                        }
                    }
                }
            }
        }