收集更改时,Listview未被刷新

时间:2016-11-22 01:30:42

标签: c# .net uwp win-universal-app

我的Xaml中有一个listview,它在我的数据模型中绑定到ActiveList属性。

根据选择的内容,我想将列表的内容更改为另一个列表。如果我通过viewmodel进行调试,我可以看到列表正好被分配了新列表,但是这并没有反映在UI中!

列表是ObservableCollections,它实现了INotifyCollectionChanged接口。那么为什么UI不会被刷新?

视图模型:

public TcgType SelectedTcgType
        {
            get { return _selectedTcgType; }
            set
            {
                Set(ref _selectedTcgType, value);
                switch (value.Name)
                {
                    case "Yugioh":
                        ActiveCards = YugiohCards;
                        break;

                    case "Hearthstone":
                        ActiveCards = HearthStoneCards;
                        break;
                    case "DBZ":
                        ActiveCards = DbzCards;
                        break;
                    case "Pokemon":
                        ActiveCards = PokemonCards;
                        break;

                }

                //Set(ref _selectedTcgType, value);
            }
        }

设置功能:

public bool Set<T>(ref T field, T value,
            [CallerMemberName] string propertyName = null)
        {
            if (EqualityComparer<T>.Default.Equals(field, value))
                return false;

            field = value;
            RaisepropertyChanged(propertyName);
            return true;
        }

1 个答案:

答案 0 :(得分:0)

根据我的Set方法,我没有提升为集合更改的Property事件。仅适用于列表视图中的选定值。

我在我的switch语句中添加了RaisePropertyChanged("ActiveList")并更新了。

 protected void RaisepropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }