Mega Code Archive

 
Categories / C# / WPF
 

List box that uses data binding to populate the list box items

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:src="clr-namespace:ListBoxEvent"       x:Class="ListBoxEvent.Pane1">   <Canvas.Resources>     <src:myColors x:Key="Colors"/>   </Canvas.Resources>     <StackPanel Margin="10, 10, 3, 3">       <WrapPanel Width="500" Orientation="Horizontal" Name="rectanglesPanel">         <WrapPanel.Resources>           <Style TargetType="Rectangle">             <Setter Property="Height" Value="20"/>             <Setter Property="Width" Value="20"/>             <Setter Property="Margin" Value="5"/>           </Style>         </WrapPanel.Resources>       </WrapPanel>       <ListBox Name="myListBox" HorizontalAlignment="Left" SelectionMode="Extended"              Width="265" Height="55" Background="HoneyDew" SelectionChanged="myListBox_SelectionChanged"             ItemsSource="{Binding Source={StaticResource Colors}}" IsSynchronizedWithCurrentItem="true">       </ListBox>     </StackPanel> </Canvas> //File:Window.xaml.cs using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Data; using System.Windows.Media; using System.Collections.ObjectModel; namespace ListBoxEvent {     public class myColors : ObservableCollection<string>     {         public myColors()         {             Add("LightBlue");             Add("Pink");             Add("Red");             Add("Purple");             Add("Blue");             Add("Green");         }     }     public partial class Pane1 : Canvas     {         public Pane1() : base()         {             InitializeComponent();         }         void myListBox_SelectionChanged(object sender, SelectionChangedEventArgs args)         {             BrushConverter converter = new BrushConverter();             foreach (string color in args.AddedItems)             {                 if (GetRectangle(color) == null)                 {                     Rectangle aRect = new Rectangle();                     aRect.Fill = (Brush) converter.ConvertFrom(color);                     aRect.Tag = color;                     rectanglesPanel.Children.Add(aRect);                 }             }             foreach (string color in args.RemovedItems)             {                 FrameworkElement removedItem = GetRectangle(color);                 if (removedItem != null)                 {                     rectanglesPanel.Children.Remove(removedItem);                 }             }         }         FrameworkElement GetRectangle(string color)         {             foreach (FrameworkElement rect in rectanglesPanel.Children)             {                 if (rect.Tag.ToString() == color)                     return rect;             }             return null;         }     } }