0
我有一個MainWindow,並在MainWindow後面的代碼中嵌入子窗口。嵌入式子窗口也具有它自己的代碼隱藏文件。主窗口有一個列表框,我想反映每次用戶雙擊子窗口中找到的字符串列表。我如何使一個列表框自動反映每次我添加或刪除WPF中的SortedDictionary項目
我該如何去做這件事?我研究過INotifyCollectionChanged,但msdn上的文檔非常稀少。
任何幫助表示讚賞。
我有一個MainWindow,並在MainWindow後面的代碼中嵌入子窗口。嵌入式子窗口也具有它自己的代碼隱藏文件。主窗口有一個列表框,我想反映每次用戶雙擊子窗口中找到的字符串列表。我如何使一個列表框自動反映每次我添加或刪除WPF中的SortedDictionary項目
我該如何去做這件事?我研究過INotifyCollectionChanged,但msdn上的文檔非常稀少。
任何幫助表示讚賞。
您需要通過實現INotifyCollectionChanged的SortedDictionary創建包裝類。
簡單的例子(當然你需要實現字典的所有方法):
public class SyncSortedDictionary<T1,T2> : INotifyCollectionChanged, IDictionary<T1,T2>
{
#region Fields
private readonly SortedDictionary<T1,T2> _items;
#endregion
#region Events
public event NotifyCollectionChangedEventHandler CollectionChanged;
#endregion
#region Notify
private void OnCollectionChanged(NotifyCollectionChangedAction action, object item, int index)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(action, item, index));
}
private void OnCollectionChanged(NotifyCollectionChangedAction action, object item, int index, int oldIndex)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(action, item, index, oldIndex));
}
private void OnCollectionChanged(NotifyCollectionChangedAction action, object oldItem, object newItem, int index)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(action, newItem, oldItem, index));
}
private void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
var collectionChanged = CollectionChanged;
if (collectionChanged == null)
return;
collectionChanged(this, e);
}
#endregion
#region Public Methods
public void Add(KeyValuePair<T1, T2> item)
{
int index = _items.Count;
_items.Add(item.Key, item.Value);
OnCollectionChanged(NotifyCollectionChangedAction.Add, item, index);
}
#endregion
}
謝謝,但如何在主窗口的ListBox控件收聽或綁定到這個?對不起,我是新來的wpf。 – quacksquared