У меня есть проект UWP c#, где я объявляю ObservableCollection элементов, на странице есть TreeView, привязанный к коллекции. Когда я загружаю его, все в порядке, и TreeView заполняется.
Затем я добавил кнопку для сортировки по возрастанию и по убыванию, НО, когда я сортирую его, TreeView не изменяется; Я прочитал много похожих вопросов, но не смог найти решение.
В одном из них решение было:
public ObservableCollection<MTreeViewPaz> Patients { get; private set; } = new ObservableCollection<MTreeViewPaz>();
... в коде AppBar позади на the AppBarToggleButton_Checked:
Patients = new ObservableCollection<MTreeViewPaz>(
from i in Patients orderby i.Data descending, i.Cognome, i.Nome select i);
Представление привязано к пациентам:
<winui:TreeView
x:Name="treeView"
Grid.Row="1"
Expanding="treeView_Expanding"
ItemInvoked="OnItemInvoked"
ItemTemplate="{StaticResource ItemTemplate}"
ItemsSource="{x:Bind Patients}"
SelectionMode="Single" />
Но ничего не происходит. Я проверил с помощью отладчика, и элементы Patients различаются до и после сортировки. Так что эта часть работает нормально, только не отображается.
Даже она должна быть бесполезной, поскольку ObservableCollection должна вызывать события, которые я даже пытался сделать так:
private ObservableCollection<MTreeViewPaz> _Patients;
public ObservableCollection<MTreeViewPaz> Patients
{
get { return _Patients; }
private set { Set(ref _Patients, value); }
}
private void Set<T>(ref T storage, T value, [CallerMemberName]string propertyName = null)
{
if (Equals(storage, value))
{
return;
}
storage = value;
OnPropertyChanged(propertyName);
}
private void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
Но это не работает