2012-04-23 4 views
0

DataGridにバインドされた観測可能なコレクションがあります。ヘッダーをクリックしてDataGridをソートしたいと思います。これは動的なデータです。ここに私のコードですObservable Collectionを使用してSilverlightでDataGridをソート

namespace SLSortObservableCollection 
{ 
    public partial class MainPage : UserControl 
    { 
     //ObservableCollection<int> NumData = new ObservableCollection<int>(); 
     // ObservableCollection<string> StrData = new ObservableCollection<string>(); 

    public MainPage() 
    { 
     InitializeComponent(); 

     ObservableCollection<int> NumData = new ObservableCollection<int>(); 
    ObservableCollection<string> StrData = new ObservableCollection<string>(); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     Random ra = new Random(); 
     for (int i = 0; i < 10; i++) 
     { 
      int num = ra.Next(1000); 
      NumData.Add(num); 

     } 
     try 
     { 

      dataGrid1.ItemsSource = null; 
      dataGrid1.ItemsSource = NumData; 
     } 
     catch (Exception ex) { MessageBox.Show(ex.ToString()); } 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      StringBuilder builder = new StringBuilder(); 
      Random random = new Random(); 
      char ch; 
      for (int i = 0; i < 5; i++) 
      { 
       ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); 
       builder.Append(ch); 
       StrData.Add(builder.ToString()); 
      } 

      dataGrid1.ItemsSource = StrData; 
     } 
     catch (Exception ex) { MessageBox.Show(ex.ToString()); } 
    } 

} 

} 
+0

を始めるためにいくつかの実装では、誰が助けてくださいすることができ

ちょうど "ソート可能なのObservableCollection" を検索、あります...私は、ヘッダーをクリックして列をソートしたい... –

答えて

1

ObservableCollectionはソートをまったくサポートしていません。これがSilverlightでない場合は、CollectionViewで何かできることがあります。

そのまま、SortableCollectionのカスタム拡張を使用する必要があります。周りに飛んでこれらのいくつかは、あなたが

http://kiwigis.blogspot.de/2010/03/how-to-sort-obversablecollection.html

http://elegantcode.com/2009/05/14/write-a-sortable-observablecollection-for-wpf/

http://sortablecollection.codeplex.com/

+0

私たちはcolumnheader_Clickイベントのようなものを使用して、 t ..... –

+0

ここで重要な部分は、列見出しをクリックして列を並べ替える必要があることです。Silverlight5 DataGridには「ColumnHeaderClik」イベントがありません –

+0

カスタムObservableCollectionがIComparableを実装する場合、通常のリストと同様に動作します。クリックイベントを追加する必要はありません。 (自分でこれをテストしていない) – HugoRune

関連する問題