列表视图中的复选框-单击复选框标记列表视图行
本文关键字:列表 复选框 视图 单击 | 更新日期: 2023-09-27 18:02:37
我有一个列表视图,像这样的一个列:
<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>
和click事件:
private void chkb_Click(object sender, RoutedEventArgs e)
{
startSomething = myList.SelectedItem;
}
我的问题是,当我在列表视图中没有一行"标记"并按下复选框时,没有任何事情发生,因为我没有selectedItem。或者如果我有几条线,标记第1行,然后尝试按第2行上的复选框。它从错误的行开始,然后是我按下的行。
我能想到的最简单的修复是确保当我按下复选框时,我希望它标记我按下的复选框所在的行。但我在这方面有问题。
有人能帮忙吗?
为绑定到列表视图项的复选框添加一个标签值
<CheckBox Click="chkb_Click" Tag="{Binding}">
,您可以在单击处理程序中访问复选框所属的项(不需要选择之前的项):
private void chkb_Click(object sender, RoutedEventArgs e)
{
var startSomething = (sender as FrameworkElement).Tag;
}