Проблема в редактировании сетки данных WPF с включенной группировкой - PullRequest
2 голосов
/ 19 мая 2011

Datagrid xaml code:

  <controls:DataGrid Name="dataGrid" AutoGenerateColumns="False" >
    <controls:DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Name}" />
                     </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>
    </controls:DataGrid.GroupStyle>

        <controls:DataGrid.Columns>
            <controls:DataGridTextColumn Header="Student ID"  Width="90*" MinWidth="120" Binding="{Binding StudentId}"/>
            <controls:DataGridTextColumn Header="Student Name" Width="90*" MinWidth="120" Binding="{Binding Name}"/>
            <controls:DataGridTextColumn Header="Score" Width="100*" MinWidth="150" Binding="{Binding Score}"/>
        </controls:DataGrid.Columns>
    </controls:DataGrid>

Здесь указан код:

    void LoadDatagrid()
    {
        List<Student> _studentList = new List<Student>();

        _studentList.Add(new Student()
        {
            StudentId = 1,
            Name = "Paul Henriot",
            Department = "IT",
            Score = 540
        });

        _studentList.Add(new Student()
        {
            StudentId = 2,
            Name = "John Doe",
            Department = "IT",
            Score = 620
        });

        _studentList.Add(new Student()
        {
            StudentId = 3,
            Name = "Aria Cruz",
            Department = "ME",
            Score = 840
        });


        _studentList.Add(new Student()
        {
            StudentId = 4,
            Name = "Yoshi Latimer",
            Department = "ME",
            Score = 450
        });



        CollectionViewSource viewSource = new CollectionViewSource();
        viewSource.GroupDescriptions.Add(new PropertyGroupDescription("Department"));
        viewSource.Source = _studentList; ;
        dataGrid.ItemsSource = viewSource.View;
    }

  public class Student
    {
        public int StudentId{ get; set; }
        public string Name { get; set; }
        public string Department { get; set; }
        public int Score { get; set; }
    }

, когда я пытаюсь отредактировать партитуру или имя в любом из отделов после редактированияэтот ряд прыгает вниз.

Нужна помощь по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Я думаю, что ваш код неправильный, для связующего пути GroupStyle должно быть "Отдел", а не "Имя".

Измените свой код с:

        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Name}" />
                    </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>

к этому:

        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Department}" />
                    </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>

Должно работать нормально.

0 голосов
/ 26 мая 2011

Это решает мою проблему, я добавил SortDescription в CollectionViewSource.

        CollectionViewSource viewSource = new CollectionViewSource();
        viewSource.GroupDescriptions.Add(new PropertyGroupDescription("Department"));
        viewSource.SortDescriptions.Add(new System.ComponentModel.SortDescription("Department", System.ComponentModel.ListSortDirection.Ascending));
        viewSource.SortDescriptions.Add(new System.ComponentModel.SortDescription("StudentId", System.ComponentModel.ListSortDirection.Ascending));
        viewSource.Source = _studentList; ;
        dataGrid.ItemsSource = viewSource.View;
...