c# - 如何在 WPF Gridview 中获取检查的行值
问题描述
我在 WPF 中创建了带有两列的 gridview。一个用于 DataGridTextColumn,另一个用于 DataGridCheckBoxColumn。
<DataGrid AutoGenerateColumns="False" Name="dataGrid1">
<DataGrid.Columns>
<DataGridTextColumn Header="MyString" Binding="{Binding MyString}" />
<DataGridCheckBoxColumn Header="MyBool" Binding="{Binding MyBool}" />
</DataGrid.Columns>
</DataGrid>
现在,我想获取选中的项目文本值,
var SelectedList = new List<checkedBoxIte>();
StringBuilder aa = new StringBuilder();
for (int i = 0; i < dataGrid1.Items.Count; i++)
{
var item = dataGrid1.Items[i];
var mycheckbox = dataGrid1.Columns[1].GetCellContent(item) as CheckBox;
var myTextBox = dataGrid1.Columns[0].GetCellContent(item) as TextBox;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(item[i]);
//aa.Append(myTextBox.Text);
}
}
我怎样才能做到这一点。
解决方案
您不应该使用 a TextBox
,而应该使用 a TextBlock
,因为那是您DataGridView
实际包含在WPF
.
所以改变你的代码是这样的:
var SelectedList = new List<checkedBoxIte>();
StringBuilder aa = new StringBuilder();
for (int i = 0; i < dataGrid1.Items.Count; i++)
{
var item = dataGrid1.Items[i];
var mycheckbox = dataGrid1.Columns[1].GetCellContent(item) as CheckBox;
var myTextBlock = dataGrid1.Columns[0].GetCellContent(item) as TextBlock;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(item[i]);
aa.Append(myTextBlock.Text);
}
}
推荐阅读
- javascript - 如何让 VSCode 在导入中解析“@”
- javascript - 我在 Ionic 4 滑块 swiper-zoom-container 中遇到任何错误
- sql-server - 是否可以使用 Azure DevOps 构建任务将 SQL 脚本部署到多个数据库?
- ios - 我的 Xcode 预览与模拟器中的不匹配
- reactjs - 如何在 CloudFront 上托管 React 应用程序,但使其对组织私有
- ubuntu - 如何从 Ubuntu 18.04.2 中完全删除 hg-git
- javascript - 如何使用 Google Analytics 跟踪和同步 Chrome 扩展安装以及与网站交互的交互?
- c++ - vptr 和 vtable 在下面的虚拟相关代码中是如何工作的?
- angular - '[ngTemplateOutet]' 正在工作,但 '*ngTemplateOutlet' 没有
- node.js - 请求帖子正文未交付给特快专递处理程序