2012-11-15 41 views
10

私はアプリケーションでWPF Datagridを使用していますが、ヘッダーをクリックして列をソートすることができます。WPF Datagrid:列のソートをクリアする

列の並べ替えをプログラマチックにクリアする方法があるのだろうかと思っていましたか?

私は列をソートしてからMyDataGrid.Items.SortDescriptionsをクリアしようとしましたが、(その列がソートされていても)そのコレクションは空でした。

私も試みた:

MyDataGridColumn.SortDirection = null; 

問題は、列表示が消えていることであるが、セルを編集し、行を切り替えるときソートが引き続き発生します。

列の並べ替えをクリアする方法はありませんか?

編集(わかりやすくするために)問題は、ユーザーが同じ列ヘッダーを再度クリックすると、CanUserSortをfalseに設定することで問題が発生する可能性があることです。 XAML。要するに、私がやろうとしているのは、ソートされた列に変更されたセルがあると、行が順序付けされないようにすることです。ユーザーがヘッダーを再度クリックするようにしたい。すべての列のfalse

+0

行を編集するときに気になることはありませんでした。 – Paparazzi

+0

@Blamそうです。別の行を選択すると、編集されたセルの行がソートされます。 –

+0

CollectionViewからクリアします。 http://stackoverflow.com/questions/5401912/how-to-remove-wpf-grid-sort-arrow-after-clearing-sort-descriptions – Vibes

答えて

4

セットCanUserSort - データグリッドのXAMLコードで

foreach (var a in MyDataGrid.Columns) 
{ 
    a.CanUserSort = false; 
} 
+0

これは列を防止しませんもう一度ソートされることから?私は、特定の列の並べ替えを削除するだけで、すべての列に対して並べ替えを無効にするのではありません。 –

+0

それで、それはあなたが望むものではありませんか? –

+0

xamlのこの特定の列に対してこのプロパティをfalseに設定できませんか? –

-2

あなたは= "false" をCanUserSortColumnsを追加することができます。そうすれば、noboadyはrumtimeで任意の列をソートできます。

+0

このテクニックは適切ではないという疑問で既に言及されています。 – Ren

+0

@Ren - これは、DataGridViewの並べ替えを無効にする小さなコードスニペットです。 がため(INT i = 0; I Vaibhav

-2

これは、並べ替えを無効にする小さなコードスニペットDataGridViewです。ここで

for (int i = 0; i < dataGridView1.ColumnCount; i++) 
{ 
    dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; 
} 
+0

質問を読むと、これは著者が望むものではないことがわかります。ユーザーがセルを編集するときに列の並べ替えを自動的に防止したいが、並べ替えを有効にしておきたい場合は、列ヘッダーをクリックして並べ替えることができます。 – Ren

10

は何が必要です:

using System.Windows.Data; 
using System.ComponentModel; 

ICollectionView view = CollectionViewSource.GetDefaultView(grid.ItemsSource); 
if (view != null) 
{ 
    view.SortDescriptions.Clear(); 
    foreach (DataGridColumn column in grid.Columns) 
    { 
     column.SortDirection = null; 
    } 
} 

オリジナルソース:https://stackoverflow.com/a/9533076/964053

私が知りたいのは何M $ ClearSort()メソッドを入れないために考えていたものです...

1

XAMLでは、このコードを使用してXAMLをオフにできます。

<DataGridTextColumn Header="Header Name" CanUserSort="False"/> 
関連する問題