列表视图中的复选框 - 复选框单击标记列表视图行

时间:2015-07-14 07:37:01

标签: c# wpf listview checkbox

我有一个列表视图,其中有一列如下:

<ListView.View>
   <GridView>
      <GridViewColumn x:Name="OnOffSwitch" Header="Enabled" Width="118">
          <GridViewColumn.CellTemplate>
              <DataTemplate>
                  <CheckBox Click="chkb_Click">
                      <CheckBox.Style>
                          <Style TargetType="CheckBox">
                              <Style.Triggers>
                                    <Trigger Property="IsMouseOver" Value="true">
                                        <Setter Property="Cursor" Value="Hand" />
                                    </Trigger>
                              </Style.Triggers>
                           </Style>
                      </CheckBox.Style>
                  </CheckBox>
               </DataTemplate>
          </GridViewColumn.CellTemplate>
      </GridViewColumn>
   </GridView>
</ListView.View>

和点击事件如下:

private void chkb_Click(object sender, RoutedEventArgs e)
    {
        startSomething = myList.SelectedItem;
    }

我的问题是当我在列表视图中没有“标记”行并按下复选框时没有发生任何事情,因为我没有selectedItem。或者,如果我有几行,标记行nr 1并尝试按行nr 2上的复选框。它开始错误的行然后我按下的行。

我能想到的最简单的解决方法是确保当我按下复选框时我希望它标记我按下的复选框所在的行。但我这样做有问题。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

将标签值添加到绑定到列表视图项

的复选框
<CheckBox Click="chkb_Click" Tag="{Binding}">

您可以在点击处理程序中访问复选框所属的项目(之前不选择项目):

private void chkb_Click(object sender, RoutedEventArgs e)
{
    var startSomething = (sender as FrameworkElement).Tag;
}