在wpf中查找gridview内的复选框

时间:2011-07-20 18:21:09

标签: c# wpf xaml

我有以下代码:

<ListView Name="lvwYears"
          Margin="0,32,191,29"
          ItemsSource="{Binding Path=YearCollection}">
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumnHeader>
                    <CheckBox Click="CheckBox_Checked"
                              HorizontalAlignment="Left"
                              Content="Year"
                              Padding="50,0,0,0"
                              Margin="20,0,0,0"></CheckBox>
                </GridViewColumnHeader>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Click="CheckBoxIndividual_Click"
                                  Name="cbxYears"
                                  VerticalAlignment="Center"
                                  Content="{Binding}"
                                  HorizontalAlignment="Left"
                                  Padding="50,0,0,0"
                                  Margin="20,0,0,0" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>

我想遍历复选框并在选中GridViewcolumnHeader中的CheckBox时检查它们。我尝试使用VisualTree并且失败了,我得到的错误是元素必须是Visual或Visual3D。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

检查复选框没有将IsChecked绑定到某个东西是没有意义的。将您的ItemsSource更改为包含整数和布尔值的结构集合。选中该复选框后,迭代并将所有bool设置为true。

如果你真的坚持要保留整数列表,那么作为一个完整的黑客你可以使用每个复选框中的Loaded事件将其记录在列表中,然后在选中顶部复选框时检查列表中的所有内容,但是我不推荐这个。