У меня есть ListView
с CheckBox
в качестве одного из столбцов, связанных с логическим свойством пользовательского объекта. Я пытаюсь выяснить, как перебирать элементы в ListView
и проверять все флажки. То, что у меня есть, ниже:
XAML:
<ListView x:Name="MyListView" DockPanel.Dock="Top" Height="275" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="Enabled">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsChecked}" Click="CheckBox_Click" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
VB.NET:
Private Sub SelectAll_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles SelectAll.Click
Dim currSelected As Integer = MyListView.SelectedIndex
MyListView.SelectAll()
For ixItem As Integer = 0 To MyListView.SelectedItems.Count - 1
coItems(ixItem).IsChecked = True
Next
MyListView.SelectedIndex = currSelected
End Sub
У меня есть догадка, это на самом деле довольно легко, и я просто пропускаю где-то одну строку. Спасибо за помощь!
ОБНОВЛЕНИЕ: Проблема, в частности, заключается в том, что флажки, которые видны при нажатии кнопки, отображаются не как отмеченные, а те, которые не видны (поскольку пользователю необходимо прокрутить вниз, чтобы увидеть их) отображаются как проверенные.
ОБНОВЛЕНИЕ 2: В соответствии с запросом приведен код PropertyChanged. Я все еще довольно новичок в WPF, я не так много сделал с INotifyPropertyChanged.
Public Property blnIsChecked() As Boolean
Get
Return _blnIsChecked
End Get
Set(ByVal value As Boolean)
_blnIsChecked = value
End Set
End Property
Public Event PropertyChangedHandler(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged