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