Arhn - архитектура программирования

Как настроить заголовки DataGrid, похожие на это изображение?

Я пытаюсь реализовать заголовки DataGrid, как на этом изображении: введите здесь описание изображения

Как можно реализовать этот макет?

17.10.2016

  • Каковы столбцы вашей записи? Думаю, я могу тебе помочь. 17.10.2016
  • Не могли бы вы уточнить, используете ли вы какой-либо сторонний элемент управления DataGrid или Microsoft DataGrid? 17.10.2016
  • Дубликат stackoverflow.com/questions /17652039/ также проверьте stackoverflow.com/ вопросы/4827481/ 17.10.2016
  • 1. Я использую Microsoft DataGrid. 2. Столбцы для моей записи: идентификатор поставщика, идентификатор продукта, название продукта, количество в единице, цена и единицы на складе. 18.10.2016

Ответы:


1

Я всегда предпочитаю этот подход, который использует DataGrids внутри DataGrid.

XAML

<Window x:Class="WpfStackOverflow.Window8"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window8" Height="300" Width="300">
    <Grid>
        <DataGrid Loaded="Dgrd_Loaded_1" CanUserAddRows="False" CanUserResizeRows="False" VerticalGridLinesBrush="Transparent" HorizontalGridLinesBrush="Transparent" x:Name="Dgrd" ItemsSource="{Binding .}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid BorderThickness="1" HorizontalScrollBarVisibility="Auto" VerticalGridLinesBrush="Transparent" HeadersVisibility="Column" AutoGenerateColumns="False" ItemsSource="{Binding SupplierIDCol}">                               
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="Supplier ID" Binding="{Binding SupplierID}" MinWidth="100" Width="*"/>
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn MinWidth="300" Width="*">
                    <DataGridTemplateColumn.Header>
                        <Grid>
                            <TextBlock Text="Product Details" HorizontalAlignment="Center" />
                        </Grid>
                    </DataGridTemplateColumn.Header>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid BorderThickness="1" HorizontalScrollBarVisibility="Auto" AutoGenerateColumns="False" MinWidth="300" ItemsSource="{Binding SupplierIDCol}" HorizontalContentAlignment="Stretch" HeadersVisibility="Column">
                                <DataGrid.CellStyle>
                                    <Style TargetType="DataGridCell">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Self}}" Value="3">
                                                <Setter Property="BorderThickness" Value="0"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </DataGrid.CellStyle>
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="ProductID" Binding="{Binding ProductID}"/>
                                    <DataGridTextColumn Header="ProductName" Binding="{Binding ProductName}"/>
                                    <DataGridTextColumn Header="QuantityPerUnit" Binding="{Binding QuantityPerUnit}"/>
                                    <DataGridTextColumn Header="Price" Binding="{Binding Price}"  MinWidth="75" Width="*"/>
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn MinWidth="100" Width="*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid BorderThickness="1" VerticalGridLinesBrush="Transparent" HeadersVisibility="Column" AutoGenerateColumns="False" ItemsSource="{Binding SupplierIDCol}">
                                <DataGrid.Columns>
                                    <DataGridTextColumn  Header="Units In Stock" Binding="{Binding UnitsInStocks}" MinWidth="100" Width="*"/>
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

КОД

using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace WpfStackOverflow
{
    /// <summary>
    /// Interaction logic for Window8.xaml
    /// </summary>
    public partial class Window8 : Window
    {
        public Window8()
        {
            InitializeComponent();

            var records = new[] { 
                new { SupplierID = 123, ProductID = 12, ProductName = "ProductName1", QuantityPerUnit = 45, Price = 451, UnitsInStocks = 123 },
                new { SupplierID = 123, ProductID = 12, ProductName = "ProductName1", QuantityPerUnit = 45, Price = 451, UnitsInStocks = 123 },
                new { SupplierID = 123, ProductID = 12, ProductName = "ProductName1", QuantityPerUnit = 45, Price = 451, UnitsInStocks = 123 },
                new { SupplierID = 123, ProductID = 12, ProductName = "ProductName1", QuantityPerUnit = 45, Price = 451, UnitsInStocks = 123 },
                new { SupplierID = 123, ProductID = 12, ProductName = "ProductName1", QuantityPerUnit = 45, Price = 451, UnitsInStocks = 123 }
            }.ToList();

            this.DataContext = new[] { new { SupplierIDCol = records } }.ToList();
        }

        private void Dgrd_Loaded_1(object sender, RoutedEventArgs e)
        {
            DataGrid dgrid = sender as DataGrid;
            DataGridColumn col = dgrid.Columns[1];
            Grid header = col.Header as Grid;

            DataGridRow row = dgrid.ItemContainerGenerator.ContainerFromIndex(0) as DataGridRow;

            ContentPresenter cp = col.GetCellContent(row) as ContentPresenter;
            header.Width = cp.ActualWidth;
        }
    }
}
19.10.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..