通过 ListView 中方法的输出绑定 WPF 中的复选框

本文关键字:WPF 复选框 绑定 输出 方法 通过 ListView | 更新日期: 2023-09-27 18:34:15

im 使用 WPF 制作一个小型桌面应用程序。

我有一个视图,其中包含一个带有项目的列表视图,例如,每个元素都通过 itemssource 属性和 {绑定名称} 很好地绑定。

但是,每个列表视图项都必须有一个复选框。是否选中复选框取决于该项目是否存在于不同的列表中,这意味着我无法通过模型/数据上下文绑定它。是否可以从代码隐藏文件绑定方法输出的 isChecked 属性?或者我该怎么做?

通过 ListView 中方法的输出绑定 WPF 中的复选框

您说您有一个列表视图,并且它的 itemssource 属性绑定到视图模型的集合。如果是这样,则应使用 bool 属性扩展该集合中实例的对象。此属性应确定实例是否在您提到的其他列表中,并且该属性可以绑定到复选框 isChecked 属性。

或者你可以在代码隐藏文件中做一些讨厌的事情(遍历列表视图的项目并检查该项目是否在其他列表中,并查找该项目的复选框并相应地检查它),但我强烈建议不要这样做。

你的问题不是很清楚,但如果我理解正确,你可以尝试使用checkedListBox.它可以包含一个复选框列表,您可以循环访问它:

for (int i = 0; i < checkedListBox1.Items.Count; i++) {
   if(....) {
   //here you can write your if statement or call a method whose return type is bool
   checkedListBox1.SetItemChecked(i, true);
   }
}

如果我正确理解您要做什么,则可以在isChecked绑定上使用ValueConverter。在该方法上,您可以对其他列表中存在的参数进行比较或测试。无需为此破坏 mvvm 模式

iValueConverter的使用和教程:使用IValueConverter进行价值转换