列行在wpf中的datagrid中不同步

列行在wpf中的datagrid中不同步,wpf,datagrid,Wpf,Datagrid,我添加了一个datagrid控件来显示员工详细信息,并与ObservableCollection绑定。 我根据国家对数据进行了分组。 但现在的问题是,列标题的垂直线(分隔列的线)与列数据不同步(网格数据部分中的线相对于标题线稍微向右移动) 如果删除组标题,则列标题垂直线与列数据同步。 是否有任何属性可以将该行与整个列同步 下面是xaml代码 <Grid> <Custom:DataGrid x:Name="dgData" CanUserAddRows="Fals

我添加了一个datagrid控件来显示员工详细信息,并与ObservableCollection绑定。 我根据国家对数据进行了分组。 但现在的问题是,列标题的垂直线(分隔列的线)与列数据不同步(网格数据部分中的线相对于标题线稍微向右移动)

如果删除组标题,则列标题垂直线与列数据同步。 是否有任何属性可以将该行与整个列同步

下面是xaml代码

 <Grid>
        <Custom:DataGrid x:Name="dgData" CanUserAddRows="False" AutoGenerateColumns="False" HeadersVisibility="Column"
                         CanUserDeleteRows="False" ItemsSource="{Binding}">
            <Custom:DataGrid.GroupStyle>
                <GroupStyle >
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>

                            <DockPanel Background="LightBlue">
                                <TextBlock Text="{Binding Name}" Foreground="Blue" Margin="30,0,0,0" Width="100"/>

                            </DockPanel>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                </GroupStyle>
            </Custom:DataGrid.GroupStyle>
            <Custom:DataGrid.Columns>
                <Custom:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <Custom:DataGridTextColumn Header="Contact" Binding="{Binding Contact}"/>
                <Custom:DataGridTextColumn Header="Email ID" Binding="{Binding EmailID}"/>
                <Custom:DataGridTextColumn Header="Country" Binding="{Binding Country}"/>
            </Custom:DataGrid.Columns>
        </Custom:DataGrid>
    </Grid>

below is code behind file

     public Window1()
        {
            InitializeComponent();
            ObservableCollection<Employee> empData = new ObservableCollection<Employee> 
            {
                new Employee{Name="Diptimaya Patra", Contact="0000", 
                    EmailID="diptimaya.patra@some.com", Country="India"},
                new Employee{Name="Dhananjay Kumar", Contact="00020", 
                    EmailID="dhananjay.kumar@some.com", Country="India"},
                new Employee{Name="David Paul", Contact="1230", 
                    EmailID="david.paul@some.com", Country="India"},
                new Employee{Name="Christina Joy", Contact="1980", 
                    EmailID="christina.joy@some.com", Country="UK"},
                new Employee{Name="Hiro Nakamura", Contact="0000", 
                    EmailID="hiro.nakamura@some.com", Country="Japan"},
                new Employee{Name="Angela Patrelli", Contact="0000", 
                    EmailID="angela.patrelli@some.com", Country="Japan"},
                new Employee{Name="Zoran White", Contact="0000", 
                    EmailID="diptimaya.patra@some.com", Country="Scotland"},
            };

            ListCollectionView collection = new ListCollectionView(empData);
            collection.GroupDescriptions.Add(new PropertyGroupDescription("Country"));
            dgData.ItemsSource = collection;
        }

下面是代码隐藏文件
公共窗口1()
{
初始化组件();
ObservableCollection empData=新的ObservableCollection
{
新员工{Name=“Diptimaya Patra”,Contact=“0000”,
EmailID=“diptimaya。patra@some.com“,Country=“India”},
新员工{Name=“Dhananjay Kumar”,联系人=“00020”,
EmailID=“dhananjay。kumar@some.com“,Country=“India”},
新员工{Name=“David Paul”,Contact=“1230”,
EmailID=“大卫。paul@some.com“,Country=“India”},
新员工{Name=“Christina Joy”,Contact=“1980”,
EmailID=“克里斯蒂娜。joy@some.com“,Country=“UK”},
新员工{Name=“Hiro Nakamura”,Contact=“0000”,
EmailID=“hiro。nakamura@some.com“,Country=“Japan”},
新员工{Name=“Angela Patrelli”,Contact=“0000”,
EmailID=“安吉拉。patrelli@some.com“,Country=“Japan”},
新员工{Name=“Zoran White”,Contact=“0000”,
EmailID=“diptimaya。patra@some.com“,Country=“Scotland”},
};
ListCollectionView集合=新建ListCollectionView(empData);
collection.groupdescription.Add(新属性groupdescription(“国家”);
dgData.ItemsSource=集合;
}
是的,您也必须设置属性

我用下面的代码修改了你的代码

<DataGrid x:Name="dgData" CanUserAddRows="False" AutoGenerateColumns="False" HeadersVisibility="Column"
                 CanUserDeleteRows="False" ItemsSource="{Binding}">
    <DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                    <Setter Property="Margin" Value="0,0,0,0"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type GroupItem}">
                                <DockPanel Background="LightBlue">
                                    <TextBlock Text="{Binding Name}" Foreground="Blue" Margin="30,0,0,0" Width="100" DockPanel.Dock="Top"/>
                                    <ItemsPresenter />
                                </DockPanel>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </GroupStyle.ContainerStyle>
        </GroupStyle>
    </DataGrid.GroupStyle>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
        <DataGridTextColumn Header="Contact" Binding="{Binding Contact}"/>
        <DataGridTextColumn Header="Email ID" Binding="{Binding EmailID}"/>
        <DataGridTextColumn Header="Country" Binding="{Binding Country}"/>
    </DataGrid.Columns>
</DataGrid>

你也可以这样用

 <StackPanel Background="LightBlue" Orientation="Vertical">
     <TextBlock Text="{Binding Name}" Foreground="Blue" Margin="30,0,0,0" Width="100"/>
     <ItemsPresenter />
 </StackPanel>


但它显示的是扩展器。我不想在网格中显示扩展器,但它显示扩展器。我不想在网格中显示扩展器。我尝试了下面的一个,但它并没有解决我的问题。