2010-11-18 7 views
0

Ich habe ein WPF-Fenster mit einer TreeView, die an jedem Knoten ein Kontrollkästchen enthält. Ich möchte den Status der Checkboxen erfassen können, aber ich weiß nicht wie. (Ich versuche, dies zu tun, ohne viel Code in XML schreiben)(WPF VB.Net) Wie erhält man den Status einer Checkbox, die in einem TreeView verschachtelt ist?

Hier ist, was ich in der XML haben:

<TreeView Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="1" Height="200" HorizontalAlignment="Left" Margin="126,299,0,0" Name="TreeView1" VerticalAlignment="Top" Width="220" ItemsSource="{Binding}" DataContext="{Binding}"> 
</TreeView> 

Und im VB-Code:

Dim site As ELSite 
Dim sites() As ELSite 

Dim parentCheckbox = New CheckBox 
Dim parentNode = New TreeViewItem 

parentCheckbox.Content = "All Sites" 
parentNode.Header = parentCheckbox 

For Each osite In sites 
Dim childNode = New TreeViewItem 
Dim childCheckbox = New CheckBox 
childCheckbox.Content = osite.SiteName.ToString 
childNode.Header = childCheckbox 
parentNode.Items.Add(childNode) 
Next 

TreeView1.Items.Add(parentNode) 

Private Sub TreeView1_SelectedItemChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Object)) Handles TreeView1.SelectedItemChanged 

'This event doesn't seem to occur when I check or uncheck a checkbox 

End Sub 

Dank für die Hilfe!

Antwort

1
... 
For Each osite In sites 
    Dim childNode = New TreeViewItem 
    Dim childCheckbox = New CheckBox 

    ' add this to your code ' 
    AddHandler childCheckBox.Checked, AddressOf chkbox_Checked 
    AddHandler childCheckBox.Unchecked, AddressOf chkbox_Unchecked 
    '-----------------------' 

    childCheckbox.Content = osite.SiteName.ToString 
    childNode.Header = childCheckbox 
    parentNode.Items.Add(childNode) 
Next 
... 


Private Sub chkbox_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs) 
    Dim chk = DirectCast(sender, CheckBox) 
    ' Do whatever needs to be done when chk has been checked ' 
End Sub 

Private Sub chkbox_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs) 
    Dim chk = DirectCast(sender, CheckBox) 
    ' Do whatever needs to be done when chk has been unchecked ' 
End Sub 
Verwandte Themen