Esempio n. 1
0
        private static void HeaderTemplate_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            DataGridRow dataGridRow = (DataGridRow)d;

            if (dataGridRow != null)
            {
                if (INTERNAL_VisualTreeManager.IsElementInVisualTree(dataGridRow._datagrid))
                {
                    if (e.NewValue != e.OldValue)
                    {
                        if (dataGridRow._headerUIElement != null && INTERNAL_VisualTreeManager.IsElementInVisualTree(dataGridRow._headerUIElement))
                        {
                            //we remove the header that was there before the new one:
                            dataGridRow._datagrid.RemoveElementFromGrid(dataGridRow._headerUIElement);
                        }
                        //we add the new header
                        DataTemplate template = (DataTemplate)e.NewValue;
                        if (template != null)
                        {
                            dataGridRow._headerUIElement = template.INTERNAL_InstantiateFrameworkTemplate();
                            Grid.SetRow(dataGridRow._headerUIElement, dataGridRow._rowIndex);
                            Grid.SetColumn(dataGridRow._headerUIElement, 0);
                            if (dataGridRow._headerUIElement is FrameworkElement)
                            {
                                ((FrameworkElement)dataGridRow._headerUIElement).DataContext = dataGridRow;
                            }
                            bool isCSSGrid = Grid_InternalHelpers.isCSSGridSupported();
                            if (isCSSGrid)
                            {
                                if (dataGridRow._headerUIElement is Control)
                                {
                                    ((Control)dataGridRow._headerUIElement).BorderBrush     = dataGridRow._datagrid.HorizontalGridLinesBrush;
                                    ((Control)dataGridRow._headerUIElement).BorderThickness = new Thickness(1, 0, 1, 1);
                                }
                                else if (dataGridRow._headerUIElement is Border)
                                {
                                    ((Border)dataGridRow._headerUIElement).BorderBrush     = dataGridRow._datagrid.HorizontalGridLinesBrush;
                                    ((Border)dataGridRow._headerUIElement).BorderThickness = new Thickness(1, 0, 1, 1);
                                }
                            }
                            dataGridRow._datagrid.AddElementToGrid(dataGridRow._headerUIElement);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private void ApplyContentTemplate(DataTemplate template)
        {
            object newChild;

            if (template == null)
            {
                newChild = this.Content;
            }
            else
            {
                FrameworkElement generatedContent = template.INTERNAL_InstantiateFrameworkTemplate();
                if (generatedContent != null)
                {
                    generatedContent.DataContext = this.Content;
                }
                newChild = generatedContent;
            }
            this.ChangeChild(newChild);
        }