Articles
Represents a collection of keys and values that provides notifications when items get added, removed, or when the whole list is refreshed.

Usage
using System.Windows;
namespace DW.SharpTools.Demo
{
public partial class ObservableDictionaryControl
{
public ObservableDictionaryControl()
{
InitializeComponent();
DataContext = this;
Items = new ObservableDictionary<int, string>();
}
public ObservableDictionary<int, string> Items { get; set; }
private void AddItemClick(object sender, RoutedEventArgs e)
{
var index = Items.Count + 1;
var value = string.Format("Key: {0}; Value {1}", Items.Count, index);
Items.Add(index, value);
}
}
}
<UserControl x:Class="DW.SharpTools.Demo.ObservableDictionaryControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="300">
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Center">
<Button Content="Add Item" Click="AddItemClick" />
</StackPanel>
<ListBox DataContext="{Binding Items}" ItemsSource="{Binding }">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding }" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
</UserControl>