【问题标题】:Sorting of ObservableCollection does not change TreeViewObservableCollection 的排序不会改变 TreeView
【发布时间】:2020-08-03 04:01:44
【问题描述】:

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

然后我添加了一个按钮来进行升序和降序排序,但是当我对其进行排序时,TreeView 没有改变;我已经阅读了很多类似的问题,但无法找到解决方案。

其中一个解决方案是:

        public ObservableCollection<MTreeViewPaz> Patients { get; private set; } = new ObservableCollection<MTreeViewPaz>();

...在AppBar代码后面的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" />

但是什么也没发生。 我用调试器检查过,患者项目在排序前后是不同的。所以这部分工作正常,只是没有显示。

即使它应该是无用的,因为 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));

但它不起作用

【问题讨论】:

    标签: sorting uwp treeview uwp-xaml


    【解决方案1】:

    ObservableCollection 的排序不会改变 TreeView

    为了检查上面的代码,我发现你使用了默认的x:Bind 模式(一次)。它不会响应Patients 重置。请在上面编辑为OneWay 模式。

    ItemsSource="{x:Bind DataSource, Mode=OneWay}"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多