2012-01-20 10 views
2

私はWPFツールキットDataGridを含むユーザーコントロールを持っています。このコントロールは、アプリのさまざまな場所で使用されます。グリッドには、表示されるデータの種類に関する知識はありません。グリッドがどのデータに格納されていても、最初の列でグリッドを最初にソートする方法はありますか?最初の列にバインドされたプロパティのPropertyNameがわからないので、CollectionViewSourceを使用することはできません。そこにこのロジックを配置し、使用して、最初のDataGrid並べ替え

void dataGrid_AutoGeneratedColumns(object sender, EventArgs e) 
{ 
    var firstCol = dataGrid.Columns.First(); 
    firstCol.SortDirection = ListSortDirection.Ascending; 
    dataGrid.Items.SortDescriptions.Add(new SortDescription(firstCol.SortMemberPath, ListSortDirection.Ascending)); 
} 

私はあなたが派生別のDataGridコントロールを作成することをお勧め:最初の列を

dataGrid.AutoGeneratedColumns += dataGrid_AutoGeneratedColumns; 

をし、並べ替え:

答えて

7

あなたはイベントにフックすることができ毎回コードを繰り返さないようにする新しいコントロール。

public class CustomDataGrid : DataGrid 
{ 
    public DynamicDataGrid() 
    { ... } 

    ... 
} 
+0

ご回答ありがとうございます。最初の列は、ソート方向インジケータがその列に表示されますが、実際に列をクリックするまでデータはソートされていないため、データがその列でソートされていることを示します。 – ihatemash

+0

あなたは正しいです、私はSortDescriptionをコレクションに追加するのを忘れていました。私はコードを更新しました。 – doblak

+0

列が自動生成された列でない場合、ターゲットDataGridのDataContextを設定した直後に、dataGrid_AutoGeneratedColumnsのコードを引き続き使用できます。 – laishiekai

関連する問題