GridView on Row Click中的切换复选框 - WPF

时间:2011-10-06 14:50:29

标签: c# .net wpf gridview

我有这个:

       <ListView Name="UserSolutionsGrid">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsSelected}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Width="350" DisplayMemberBinding="{Binding Name}" Header="Solution" />
                </GridView>
            </ListView.View>
        </ListView>

我想要做的是通过单击行来切换复选框,无论是复选框本身还是名称。

不确定如何继续,我是否需要将鼠标事件连接到gridview并找到所选的行,然后找到该复选框并切换它?

2 个答案:

答案 0 :(得分:1)

这对你有用。你需要做的是使用RelativeSource将你的checkBox属性绑定到ListViewItem的IsSelected属性 -

<ListView Name="UserSolutionsGrid">
    <ListView.View>
       <GridView>
          <GridViewColumn Header="">
              <GridViewColumn.CellTemplate>
                  <DataTemplate>
                     <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}}" />
                   </DataTemplate>
              </GridViewColumn.CellTemplate>
          </GridViewColumn>
          <GridViewColumn Width="350" DisplayMemberBinding="{Binding Name}" Header="Solution" />
       </GridView>
     </ListView.View>
</ListView>

答案 1 :(得分:0)

由于您提到这是多选,并且您希望能够切换等,我会按照您最初的建议使用鼠标事件。

这会使切换代码更容易一些。虽然如果使用数据绑定,则无需找到行并切换复选框,只需设置复选框绑定的值,然后引发OnPropertyChanged()。

那个网格视图是否只有两列?我认为只要在listview中使用项目模板,你就可以在没有网格的情况下获得相同的结果。