Mega Code Archive

 
Categories / VB.Net / 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.vb Imports System Imports System.ComponentModel Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Documents Imports System.Windows.Navigation Imports System.Windows.Shapes Imports System.Windows.Data Imports System.Windows.Media Imports System.Collections.ObjectModel Namespace ListBoxEvent   Public Class myColors     Inherits ObservableCollection(Of String)     Public Sub New()       Add("LightBlue")       Add("Pink")       Add("Red")       Add("Purple")       Add("Blue")       Add("Green")     End Sub   End Class   Public Partial Class Pane1     Inherits Canvas     Public Sub New()       MyBase.New()       InitializeComponent()     End Sub     Private Sub myListBox_SelectionChanged(sender As Object, args As SelectionChangedEventArgs)       Dim converter As New BrushConverter()       For Each color As String In args.AddedItems         If GetRectangle(color) Is Nothing Then           Dim aRect As New Rectangle()           aRect.Fill = DirectCast(converter.ConvertFrom(color), Brush)           aRect.Tag = color           rectanglesPanel.Children.Add(aRect)         End If       Next       For Each color As String In args.RemovedItems         Dim removedItem As FrameworkElement = GetRectangle(color)         If removedItem IsNot Nothing Then           rectanglesPanel.Children.Remove(removedItem)         End If       Next     End Sub     Private Function GetRectangle(color As String) As FrameworkElement       For Each rect As FrameworkElement In rectanglesPanel.Children         If rect.Tag.ToString() = color Then           Return rect         End If       Next       Return Nothing     End Function   End Class End Namespace