Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting ObservableCollection的排序不会更改TreeView_Sorting_Uwp_Treeview_Uwp Xaml - Fatal编程技术网

Sorting ObservableCollection的排序不会更改TreeView

Sorting ObservableCollection的排序不会更改TreeView,sorting,uwp,treeview,uwp-xaml,Sorting,Uwp,Treeview,Uwp Xaml,我有一个UWP项目c,其中我声明了一个ObservableCollection项,在页面上有一个绑定到集合的TreeView。当我加载它时,一切都很好,树视图被填充 然后我添加了一个按钮来进行升序和降序排序,但是当我对它进行排序时,树视图并没有改变;我读过很多类似的问题,但没有找到解决办法 其中一个解决方案是: public ObservableCollection<MTreeViewPaz> Patients { get; private set; } = new

我有一个UWP项目c,其中我声明了一个ObservableCollection项,在页面上有一个绑定到集合的TreeView。当我加载它时,一切都很好,树视图被填充

然后我添加了一个按钮来进行升序和降序排序,但是当我对它进行排序时,树视图并没有改变;我读过很多类似的问题,但没有找到解决办法

其中一个解决方案是:

        public ObservableCollection<MTreeViewPaz> Patients { get; private set; } = new ObservableCollection<MTreeViewPaz>();
。。。在AppBarToggleButton上的AppBar代码中,选中:

                    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" />
但什么也没发生。 我已经使用调试器进行了检查,在排序之前和之后,患者项目是不同的。因此,该部分工作正常,只是未显示

即使它也应该是无用的,因为可观察的收集应该会引发事件我甚至尝试过这样做:

       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));
但它不起作用

ObservableCollection的排序不会更改TreeView

为了检查上述代码,我发现您曾经使用过默认模式。它不会响应患者重置。请将以上内容编辑为单向模式


现在它似乎起作用了,但我发现了两个关键问题:你能帮我吗?
ItemsSource="{x:Bind DataSource, Mode=OneWay}"