I've created a simple checked list box for use in my WPF application. Annoyingly, I can't quite pin down how to get my form to listen for a CheckedChanged event firing for any of the items in the list box.
My code is as follows. Firstly, a class to hold the CheckedListItems:
Code in my window:
My XAML:
Anyone got any ideas about the last piece of the jigsaw?
Thanks...
My code is as follows. Firstly, a class to hold the CheckedListItems:
Code:
Imports System.ComponentModel
Public Class CheckedListItem(Of T)
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private _IsChecked As Boolean
Private _Item As T
Public Sub New()
End Sub
Public Sub New(item As T, Optional isChecked As Boolean = False)
Me._Item = item
Me._IsChecked = isChecked
End Sub
Public Property Item() As T
Get
Return _Item
End Get
Set(value As T)
_Item = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Item"))
End Set
End Property
Public Property IsChecked() As Boolean
Get
Return _IsChecked
End Get
Set(value As Boolean)
If Not _IsChecked = value Then
_IsChecked = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("IsChecked"))
End If
End Set
End Property
End Class
Code:
Class ProgressWindow
Implements INotifyPropertyChanged
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private _CycleJobItems As ObservableCollection(Of CheckedListItem(Of CycleJob))
Public Property CycleJobItems() As ObservableCollection(Of CheckedListItem(Of CycleJob))
Get
Return _CycleJobItems
End Get
Set(value As ObservableCollection(Of CheckedListItem(Of CycleJob)))
_CycleJobItems = value
End Set
End Property
Code:
<ListBox Name="clbCycleJobs" ItemsSource="{Binding CycleJobItems}" Margin="98,76,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="167" Height="134">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Height="16" IsChecked="{Binding IsChecked}" Content="{Binding Path=Item.JobName}" IsTabStop="False" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Thanks...