我有一个
ListView
用一个
CheckBox
作为列之一,绑定到自定义对象的布尔属性。我正在尝试了解如何迭代
列表视图
并选中所有复选框。到目前为止,我有以下几点:
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还比较陌生,我以前对inotifypropertieschanged做得不多。
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