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); }
internal static void RemoveContextFromObject(DependencyObject context, TreeGridColumn oldValue) { if (context != null && MSInternal.GetInheritanceContext(oldValue) == context) { MSInternal.ProvideSelfAsInheritanceContext(context, oldValue, null); } }
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; } } } } }