c# - 在 xaml 代码中的 Listview 中绑定复选框的问题
问题描述
我有的:
我有一个带有 6 个值(字符串)和一个名称(字符串)的 ListView。我还为每一行添加了一个复选框。 在此处输入图像描述
结构:
public struct ststuff
{
public bool bEnable { get; set; }
public string sone { get; set; }
public string stwo { get; set; }
public string stree { get; set; }
public string sa { get; set; }
public string sb { get; set; }
public string sc { get; set; }
public string sName { get; set; }
}
收藏:
private ObservableCollection<ststuff> _astuff;
一些代码:
<ListView Margin="10,100,10,10" Name="lvstuff" ItemsSource="{Binding astuff,Mode=TwoWay,ElementName=window}" SelectedIndex="{Binding nIndex,Mode=TwoWay,ElementName=window}">
<ListView.View>
<GridView>
<GridViewColumn Header="[]">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding bEnable,ElementName=window}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding sName}"/>
<GridViewColumn Header="a" Width="100" DisplayMemberBinding="{Binding sa}" />
<GridViewColumn Header="b" Width="100" DisplayMemberBinding="{Binding sb}" />
<GridViewColumn Header="c" Width="100" DisplayMemberBinding="{Binding sc}" />
<GridViewColumn Header="1" Width="100" DisplayMemberBinding="{Binding sone}" />
<GridViewColumn Header="2" Width="100" DisplayMemberBinding="{Binding stwo}" />
<GridViewColumn Header="3" Width="100" DisplayMemberBinding="{Binding stree}" />
</GridView>
</ListView.View>
</ListView>
现在我想要什么:
单击一个复选框并将真/假保存在一个值中。(例如 _astuff[0].bEnable 用于第一个复选框)
自动取款机。如果我单击一个框,所有框都会选中/取消选中,因为我将所有框都绑定到相同的值。
不知何故,我想将 Checkbox 的 IsChecked 属性绑定到我的结构的 bEnable 但我不知道如何!
解决方案
我知道它可能不是最好的方法,但它确实有效。
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox cb = e.OriginalSource as CheckBox;
int index = _astuff.IndexOf((ststuff)(cb).DataContext);
ststuff stuff= _astuff[index];
stuff.bEnable = true;
_astuff[index] = stuff;
}
问题是 ListView 的选定索引不会通过选中/取消选中复选框来更改。通过这种方式,您可以在您的集合中找到索引。您必须对 Uncheck 事件执行相同的操作。
推荐阅读
- git - 如何查看 VS Code 中的最后一次更改?
- python - Django - strptime() 参数 1 必须是 str,而不是 None
- android - 在调试版本中的类 UserProfile 上找不到要序列化的属性
- javascript - 将 Shopify 购买按钮样式设置为 100% 宽度
- matrix - 使用 DGEMM 的 BLAS LDB
- performance - 如何加快这个多重匹配弹性搜索查询?
- typescript - 未捕获的 ReferenceError:未定义 updateDisplay - Typescript Calculator
- classification - weka中的通过/失败学校成绩二进制分类
- javascript - 删除一个类,然后将其添加回来会导致不同的显示
- swift - 使用视图模型与在视图本身中使用 @Binding 时如何使用绑定?