DataGrid - cómo hacer que la columna de clasificación dinámica, para atender a cuando cambian los datos ligados?

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

Pregunta

Estoy usando una cuadrícula de datos en un proyecto de WPF VS2010 C #. He atado las DataGrid a una ObservableCollection. Al hacer clic en un encabezado de columna ordena los datos en ese punto en el tiempo.

Pregunta - ¿Cómo iba a organizar de tal manera que la clasificación en la cuadrícula de datos es dinámico, por lo que cuando los cambios de datos (dentro de la ObservableCollection) mantiene la clasificación de trabajo

.

Notas: enfoque de unión es a través de 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;
    }
}
¿Fue útil?

Solución

Se puede utilizar CollectionViewSource en código detrás, así como en XAML, cuya fuente es ItemSource de su cuadrícula de datos, entonces se puede añadir el SortDescription / s al mismo. Esto evitará que los datos ordenados todo el tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top