2011-05-19 47 views
2

Datagrid的XAML代碼:問題在WPF的DataGrid編輯,分組使能

<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; } 
    } 

當我試圖編輯的第一任一個分數或名稱部門,編輯後,行跳下來。

需要幫助。

+0

你是什麼意思「行跳下來」?你的意思是選擇移動到下一行。我試過你的代碼,發現一切正常 – biju 2011-05-19 05:43:51

+0

行本身移動到下一行(最後一行)。 – Hukam 2011-05-19 05:52:38

+0

@biju你有沒有在.Net 3.5中試過? – Hukam 2011-05-19 06:49:44

回答

0

這解決了我的問題,我已將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; 
2

我認爲你的代碼有誤,GroupStyle的綁定路徑應該是「Department」,而不是「Name」。

從改變你的代碼:

 <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

@eriawan沒有運氣::( – Hukam 2011-05-25 07:15:51

+0

您是否替換了綁定的路徑?您可以在更改綁定路徑之後發佈代碼嗎? – 2011-05-25 07:21:15

+0

我正面臨的問題與組style.its無關行 – Hukam 2011-05-25 07:29:32