我的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;
}
答案 0 :(得分:0)
根据我的Set
方法,我没有提升为集合更改的Property事件。仅适用于列表视图中的选定值。
我在我的switch语句中添加了RaisePropertyChanged("ActiveList")
并更新了。
protected void RaisepropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}