【发布时间】:2015-07-18 16:47:03
【问题描述】:
我有一个列表视图,其中有一列是这样的:
<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;
}
我的问题是当我在列表视图中没有“标记”行并按下复选框时没有任何反应,因为我没有选中项。或者,如果我有几行,请标记第 nr 1 行并尝试按下第 2 行上的复选框。它从错误的行开始,然后是我按下的行。
我能想到的最简单的解决方法是确保当我按下复选框时,我希望它标记我按下的复选框所在的行。但我这样做有问题。
有人可以帮忙吗?
【问题讨论】:
-
所以如果我理解正确的话,你想在列表框中标记选中复选框项目的行吗?
-
是的,这是正确的。我认为这是确保点击事件完美运行的最简单方法。
-
为什么不使用绑定?
-
显示的代码非常简化。我在很多事情上都使用绑定,但在这种情况下,由于一些配置文件等原因,这种方式更容易,所以如果有人 cud 帮助我找到如何标记 listview 行的解决方案,我将非常感激:)
-
毕竟使用了某种绑定:P