2012-05-19

Articles

ObservableDictionary

 

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>