c # ObjectListView - Не обновляет сортировку после изменения vlue - PullRequest
0 голосов
/ 30 апреля 2018

Я использую ObjectListView для отображения значений словаря, он отлично работает, но когда я сортирую сортировку один раз, я имею в виду, когда сортирую по возрастанию по убыванию, это сортирует их как {30, 27, 26, 15, 10}

вот пример моего класса объектов

public class Item: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    int age = -1;
    public Int32 Age
    {
        get{return age;} 
        set
        {
            if (value == age)
                return;
            this.age = value;
            OnPropertyChanged("Age");
        }
    }
}

Также вот как я добавляю список объектов в представление списка

System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
try
{
    this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
    stopWatch.Start();
    this.listview1.SetObjects(this.ItemsDictionary.Values);
}
finally
{
    stopWatch.Stop();
    this.Cursor = System.Windows.Forms.Cursors.Default;
}

я использовал

this.listview1.Update();

но я знаю, что это обновление рисования элемента управления, а не сортировка.

Если объект возраста 15 обновлен (увеличен или уменьшен), сортировка не обновляется, и она все еще находится в том же положении. Что мне нужно сделать, чтобы сделать автоматическое обновление сортировки при изменении любого значения столбца сортировки

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Я решил, используя этот код с каждым элементом, который я обновляю

    this.listview1.Sort(this.listview1.LastSortColumn);
    this.listview1.UpdateObject(OBJ);

Может быть, это кому-нибудь еще поможет.

0 голосов
/ 30 апреля 2018

Используйте это:

listView.SetObjects(iEnumerable)
...