Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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
C# 如何通知UI列表中的一个或多个发生了更改';s成员_C#_Wpf_Windows Phone 7_List_Binding - Fatal编程技术网

C# 如何通知UI列表中的一个或多个发生了更改';s成员

C# 如何通知UI列表中的一个或多个发生了更改';s成员,c#,wpf,windows-phone-7,list,binding,C#,Wpf,Windows Phone 7,List,Binding,我有以下问题: 我正在通过上下文菜单向收藏夹列表(列表)添加一个元素。每个项都有一个派生属性IsFavorite,该属性根据收藏夹列表的不同而变化,如下所示: public bool IsFavorite { get { return ItemController.FavoriteList.Contains( this ); } } 当我从ContextMenu添加(或删除)内容时,必须立即更新ContextMenu 现在,我知道通过使用ObservableCollection可以做到

我有以下问题:

我正在通过
上下文菜单
向收藏夹列表(
列表
)添加一个元素。每个
都有一个派生属性
IsFavorite
,该属性根据收藏夹列表的不同而变化,如下所示:

public bool IsFavorite
{
    get { return ItemController.FavoriteList.Contains( this ); }
}
当我从
ContextMenu
添加(或删除)内容时,必须立即更新
ContextMenu

现在,我知道通过使用ObservableCollection可以做到这一点,但由于一些我无法控制的因素,我必须使用
列表
对象进行到期。现在,有什么方法可以让这个刷新吗

public void DeleteFromFavorites(Item item)
{
    Item itemInMainList = MainList.First(item);
    itemInMainList.Refresh();
}
项目1.cs:

public bool IsFavorite
{
    get { return ItemController.FavoriteList.Contains( this ); }
}

public void Refresh()
{
    NotifyPropertyChanged("IsFavorite");
}

如果重新绑定,它可能会刷新。为什么不能更改为ObservableCollection?ObservableCollection实现了List,所以它不应该破坏任何东西。我认为即使使用ObservableCollection,也不会有关于
IsFavorite
属性更改的通知,除非您手动添加处理程序并为
IsFavorite
触发PropertyChanged事件。找到了一种解决方法。当然不是很漂亮,但是当项目被添加到收藏夹列表中时,我可以直接触发该对象的PropertyChanged。好吧,你不可能真正知道你的
是收藏夹,因为你没有定义它的更改位置(即在
集中
)。通常,当触发
PropertyChanged
事件时,UI会收到通知。但是,在这里,您不会设置此属性,也不会为任何
PropertyChanged
,因此您可能必须在
FavoriteList
上手动添加
CollectionChanged
处理程序,当此属性发生更改时,该处理程序将触发
PropertyChanged
。或者可能通过一个多绑定的
数据触发器
+转换器返回true,如果是最喜欢的,但是。。。这会很难看