14

ヘッダーをクリックして列を並べ替えることができるアプリケーションで WPF Datagrid を使用しています。

プログラムで列の並べ替えをクリアする方法があるかどうか疑問に思っていましたか?

列を並べ替えてからクリアしようとしましMyDataGrid.Items.SortDescriptionsたが、そのコレクションは空でした (1 つの列が並べ替えられていても)。

私も試しました:

MyDataGridColumn.SortDirection = null;

問題は、列の表示がなくなったことですが、セルを編集して行を切り替えると、並べ替えが引き続き発生します。

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

編集(明確にするため):問題は、ユーザーが同じ列ヘッダーを再度クリックした場合に再度並べ替えを許可したいため、CanUserSort を false に設定すると、XAML で行われた場合でも問題が発生することです。つまり、私がやろうとしているのは、並べ替えられた列に変更されたセルがあると、行が並べ替えられないようにすることです。ユーザーにヘッダーの再クリックを強制したい。

4

7 に答える 7

17

必要なものは次のとおりです。

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() メソッドを配置しないことについて何を考えていたかということです...

于 2014-02-05T20:45:14.523 に答える
4

すべての列CanUserSortに設定-false

foreach (var a in MyDataGrid.Columns)
{
    a.CanUserSort = false;
}
于 2012-11-15T16:32:57.937 に答える
0

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

<DataGridTextColumn Header="Header Name" CanUserSort="False"/>
于 2014-02-11T07:15:58.713 に答える
-2

DataGrid の XAML コードでは、CanUserSortColumns="False" を追加できます。そうすれば、実行時に列を並べ替えることができなくなります。

于 2013-03-26T09:13:56.203 に答える
-2

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

for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
    dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
于 2013-03-26T10:02:59.423 に答える