DataGrid - Как создать динамику сортировки колонны, чтобы удовлетворить привязку изменения данных?

StackOverflow https://stackoverflow.com/questions/3852356

Вопрос

Я использую DataGrid в проекте VS2010 WPF C #. Я связал DataGrid для наблюдательного элемента. Когда вы нажимаете на столбцу, заголовок, он сортирует данные в этот момент во времени.

Вопрос - как бы я организую так, что сортировка в DataGrid является динамическим, так что при изменении данных (в рамках наблюдательного элемента) сортировка продолжает работать.

Примечания: Привязка подход осуществляется через DataGrid

private ObservableCollection<SummaryItem> _summaryData = new ObservableCollection<SummaryItem>();
SummaryDataGrid.ItemsSource = _summaryData;

SummaryDataGrid.AutoGeneratingColumn += (s, e) =>
{
    //if (e.Column.Header.ToString() == "ProcessName")
    //    e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
};

public class SummaryItem : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _processName;
    public string ProcessName
    {
        get { return _processName; }
        set
        {
            _processName = value;
            NotifyPropertyChanged("ProcessName");
        }
    }

    private long _total;
    public long Total
    {
        get { return _total; }
        set
        {
            _total = value;
            NotifyPropertyChanged("Total");
        }
    }

    private long _average;
    public long Average
    {
        get { return _average; }
        set
        {
            _average = value;
            NotifyPropertyChanged("Average");
        }
    }

    private void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs((propertyName)));
        }
    }

    public static SummaryItem ObservableCollectionSearch(ObservableCollection<SummaryItem> oc, string procName)
    {
        foreach (var summaryItem in oc)
        {
            if (summaryItem.ProcessName == procName) return summaryItem;
        }
        return null;
    }
}
Это было полезно?

Решение

Вы можете использовать CollectionViewsource в коде позади, а также в XAML, источник которого является элементом вашего DataGrid, то вы можете добавить на него SOTTDECRICE / S к нему. Это будет сохранять данные сортировать все время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top