我不太確定如何提出這個問題 - 因此我也不知道如何搜索正確的答案。這是簡單的情況。
1.我有一個自定義控制(myControl)一個名爲myItemsSource一個屬性,它是IEnumerable類型 - 我需要這個,這樣當我用我的控制可以使用列表/觀察的集合/ IEnumerable的等 2.我屬性然後使用這個IEnumerable列表的邏輯包裝。包裝有幾個Ovservable列表/普通列表,然後綁定到myControl上的幾個ItemsControl元素的背景。訂閱INotifyCollection在自定義控件中通過IEnumerable更改事件
記住因此裸露,當我在一個應用程序中使用myControl,我只有一次作爲一個IEnumerable綁定列表。當我綁定Observable集合時,我想要相同的功能(即通知用戶界面 - 因此如何通知包裝器列表中的項目已更改?我無法訂閱包裝器中的事件,因爲我使用了IEnumerable 。這意味着,即使我在包裝中使用Observablecollections列表並將幾個控件綁定到這些列表....它們不會被更新,因爲我的包裝沒有被通知物品已經改變了?但是我知道甚至在我的物品包裝已被添加...我如何發送通知到我的包裝,以便它可以重新計算列表 - 更新其他列表將更新我的用戶界面?
替代問題...你怎麼看如果IEnumerable列表還通過1個方法實現INotifyCollectionChanged [方法(IEnumerable list);] - >這可能會讓我到正確的pla CE。
感謝汗下面我來到了以下解決方案(我在這裏鍵入它,因爲它是更簡單的參考答案這種方式)。請大聲點他,因爲他的快速反應對我非常有幫助!
public class Wrapper
{
INotifyCollectionChanged INC;
public Wrapper(IEnumerable list)
{
if (list is INotifyCollectionChanged)
{
INC = list as INotifyCollectionChanged;
INC.CollectionChanged += INC_CollectionChanged;
}
}
void INC_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// Some Code ;
}
}
檢查,如果一個對象實現的接口很簡單:'布爾IsNotifyCollectionChanged =(收集INotifyCollectionChanged)' – Khan