Как настроить столбец DataGrid с номерами заказов WPF? - PullRequest
1 голос
/ 27 января 2020

У меня есть такой DataGrid

enter image description here

Чтобы автоматически получить номер заказа, я добавил DataGrid метод LoadingRow таким способом

.xalm

...
<DataGrid ItemsSource="{Binding Path=GridItems}"
            HorizontalGridLinesBrush="Gray"
            RowHeaderWidth="20"
            LoadingRow="Dg_main_configuration_LoadingRow"
            CanUserReorderColumns="False"
            CanUserDeleteRows="False"
            CanUserResizeRows="False"
            CanUserSortColumns="False"
            VerticalGridLinesBrush="LightGray"
            x:Name="Dg_main_configuration"
            CanUserResizeColumns="False"
            PreviewMouseLeftButtonUp="Dg_main_configuration_PreviewMouseLeftButtonUp"
            AlternatingRowBackground="LightYellow"
            CanUserAddRows="False"
            MinHeight="350"
            MaxHeight="350"
            Grid.Column="0"
            AutoGenerateColumns="False">
...

и в коде

private void Dg_main_configuration_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}

Все хорошо, но в любом случае я хотел бы настроить этот столбец строки

Проблемы is:

  1. Вы можете видеть на скриншоте рядом с Path to clip folder (слева) есть ячейка с прямоугольником справа внизу, фактически это своего рода кнопка (потому что я могу нажать на это, но ничего не изменилось), как его отключить, или установить символ вроде #?
  2. Числа 1, 2, 3, 4 по горизонтали не в центре, как это исправить?
  3. И последний есть - Вы можете видеть, что есть горизонтальные линии DarkGray, которые разделяют строки, но я не знаю, почему числа не включают эти отдельные строки? Я имею в виду, что строка начинается после числового столбца. Как включить отдельную строку в номера заказа?

Ответы [ 2 ]

1 голос
/ 27 января 2020

Вы можете отобразить номер строки в столбце, например, используя упомянутый подход здесь .

Затем можно использовать ElementStyle для центрирования TextBlock:

<DataGridTextColumn Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, 
                        Converter={local:RowToIndexConverter}}">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
0 голосов
/ 27 января 2020

Для пункта 2 (и может также помочь вам лучше понять пункт 3). DataGrid может иметь RowHeaderTemplate (или даже более общий RowHeaderStyle ), который будет применяться к каждому значению заголовка строки (которое вы задаете в коде). Вот вопрос, связанный с .

Для точки 1 (а также для точки 2 для шаблона заголовка строки по умолчанию и для точки 3) я предлагаю вам взглянуть на стандартную Microsoft DataGrid стили и шаблоны . Возможно, вам потребуется установить весь шаблон DataGrid для изменения верхней левой части (или попробуйте создать ресурс с ключом {ComponentResourceKey ResourceId = DataGridSelectAllButtonStyle, TypeInTargetAssembly = {x: Type DataGrid}}) - это DataGridSelectAllButtonStyle, который предположительно является кнопка, которая выберет все строки, если строки могут быть выбраны в сетке данных.

Для точки 3, чтобы настроить горизонтальные линии сетки на другой цвет (например, соответствующий разделитель заголовков строк), используйте HorizontalGridLinesBru sh свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...