Столбец заголовка WPF DataGrid имеет дополнительную границу - PullRequest
0 голосов
/ 27 августа 2018

Я новичок в WPF и хочу показать данные из базы данных в WPF DataGrid. Все идет хорошо, за исключением того, что в заголовке и правом углу строк есть некоторые дополнительные границы (название которых я не знаю). Я не знаю, как это скрыть. Код в файле Xaml выглядит следующим образом

<Grid Grid.Row="0"  VerticalAlignment="Bottom" FlowDirection="RightToLeft" Background="{DynamicResource brushWatermarkBackground}">
                            <DataGrid Name="DgDeviceList" ItemsSource="{Binding}" AutoGenerateColumns="False" GridLinesVisibility="None" HorizontalAlignment="Stretch" ></DataGrid></Grid>

Тогда у меня есть такие стили в App.xaml:

<Style TargetType="{x:Type DataGrid}">
        <Setter Property="Margin" Value="0,0,0,10" />
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="FontSize" Value="15"/>
        <Setter Property="FontWeight" Value="Normal"/>
    </Style>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Margin" Value="0"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="FontSize" Value="15"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="SeparatorBrush" Value="Transparent"></Setter>
    </Style>
    <Style TargetType="{x:Type DataGridCell}">
        <Setter Property="Margin" Value="0"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="BorderThickness" Value="0,0,1,0"/>
        <Setter Property="FontSize" Value="15"/>
    </Style>

Как я заполняю Datagrid в CS-файле, как показано ниже:

 DgDeviceList.Columns.Clear();
            DgDeviceList.Items.Refresh();
            DataTable dt = AccessDb.GetDeviceList();
            if (dt != null)
            {
                DgDeviceList.DataContext = dt;
                DataGridTextColumn c1 = new DataGridTextColumn();
                Binding b = new Binding("DeviceName");
                c1.Binding = b;

                c1.Header = "Device Name";
                DgDeviceList.Columns.Add(c1);
                DataGridTextColumn c2 = new DataGridTextColumn();
                Binding b2 = new Binding("DeviceSIM1");
                c2.Binding = b2;

                c2.Header = "SIM Card1";
                DgDeviceList.Columns.Add(c2);
                DataGridTextColumn c3 = new DataGridTextColumn();
                Binding b3 = new Binding("DeviceSIM2");
                c3.Binding = b3;

                c3.Header = "SIM Card 2";
                DgDeviceList.Columns.Add(c3);
                DataGridTextColumn c0 = new DataGridTextColumn();
                Binding b0 = new Binding("PIN");
                c0.Binding = b0;

                c0.Header = "Pin Code";
                DgDeviceList.Columns.Add(c0);
                DataGridTextColumn c4 = new DataGridTextColumn();
                Binding b4 = new Binding("MoreInfo");
                c4.Binding = b4;

                c4.Header = "More Info";
                DgDeviceList.Columns.Add(c4);
            }
        }
        catch (Exception ex)
        {
            LogEvents.InLogFile("FillDataGrid:" + ex.Message);
            txtLog.Text = ex.Message + "\n" + txtLog.Text;
        }

Выходная сетка данных, как показано на рисунке ниже. enter image description here

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

Редактировать После добавления HeadersVisibility = "Column" правый угол был удален так же, как на картинке ниже. enter image description here

1 Ответ

0 голосов
/ 27 августа 2018

Просто добавьте видимость заголовка в сетку данных

<DataGrid HeadersVisibility="Column" Name="DgDeviceList" ItemsSource="{Binding}" AutoGenerateColumns="False" GridLinesVisibility="None" HorizontalAlignment="Stretch" />
...