C# WPF datagrid checkboxcolumn 使用问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF datagrid checkboxcolumn 使用问题相关的知识,希望对你有一定的参考价值。
小弟初学,做一个小项目。
前提:一、我用datagrid实现了数据绑定,每一行都是一个“用户”对象,这个用户对象有很多属性,我只让datagrid显示出了其中几个比如姓名之类的。二、我加了一个checkboxcolumn在第0列,这个列的值目前与每一行的对象无关。
我想实现一个功能:点选某几行的checkbox(可以多选),把选中行的对象传到一个数组里,以便于我进行进一步操作。这个多选事件该怎么写?用什么关键字监听?怎么取到同行的整个对象而不是只去到后面哪一个单元格的值?
包含了checkboxcolumn的用法,如果直接给你答案,对你的学习不是很有用。
如果学习了还有问题,可以继续追问。追问
你给的这个教程说的太模糊了,而且和我的问题好像没什么关系。我现在不是数据绑定的问题,只是想怎么样检测被checkbox选中行然后返回行内对象的问题。能给我一点提示么?用for循环遍历检查么?怎么检查?用什么关键字?检查后怎么返回对应行的对象?
追答DataGrid用法系列的第6篇看了吗?SelectedItem就能返回对象的,里面获得某个单元格对象都可以,看了你再提问。
参考技术A 像鸟儿和树木的一曲清歌。另一些人铸上头像,
画地球,一定不可直视太阳
当他走过无形的田野——
悬崖的白色云母
以狂的中照,哈哈本回答被提问者采纳
使用 C# 在 WPF 中使 DataGrid 列标题可排序
【中文标题】使用 C# 在 WPF 中使 DataGrid 列标题可排序【英文标题】:Making a DataGrid Column Header sortable in WPF using C# 【发布时间】:2010-11-20 18:12:01 【问题描述】:我在 Visual Studio 2008 中使用 C#,并且我已经安装了 WPF 工具包。我在 testtest.xaml 中创建了一个 DataGrid。 ID 和 Parts $ 列能够通过单击各自的列标题对 DataGrid 进行排序。但是,列标题 Complete Date 没有该功能。我使用标签“DataGridTemplateColumn”来格式化该列的日期。您如何对列标题完成日期进行编程,以便您可以单击完成日期列标题并对该列进行排序。如果单击列,箭头不仅不显示,而且列标题也不是“可单击的”。 谢谢
<Label Height="22" HorizontalAlignment="Left" Margin="10,45,0,0" Name="label1" VerticalAlignment="Top" Width="41">Task</Label>
<my:DataGrid ItemsSource="Binding" AutoGenerateColumns="False" Margin="140,83,67,28" Name="dataGrid1" GridLinesVisibility="Vertical" IsReadOnly="True">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="Binding Path=[ID]" Header="ID" />
<my:DataGridTextColumn Binding="Binding Path=p" Header="Parts $" />
<my:DataGridTemplateColumn SortMemberPath="" Header="Complete Date">
<my:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="0:MM/dd/yyyy"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
</my:DataGrid>
</Grid>
【问题讨论】:
【参考方案1】:在您的 DataGridTemplateColumn
中,您将 SortMemberPath 设置为“”。如果将此设置为项目的实际属性(例如 CompleteDate),您应该能够进行排序。您还可以在选定的列上设置CanUserSort="true"
或CanUserSort="false"
。
SortMemberPath 在用户尝试排序时提供排序依据。如果未设置,则网格不知道如何对该列进行排序(它确实不使用列中的文本)
<my:DataGridTemplateColumn SortMemberPath="CompleteDate" Header="Complete Date" CanUserSort="true">
<my:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="0:MM/dd/yyyy"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
【讨论】:
列绑定属性是否也可以?怎么办?以上是关于C# WPF datagrid checkboxcolumn 使用问题的主要内容,如果未能解决你的问题,请参考以下文章
在 C# WPF 中从 MySQL 数据库中填充 dataGrid
c# wpf datagrid 模板列修改某个单元格,更新所选行另一个单元格的值,如何做到呢?
c# wpf的datagrid列标题间的分割线,我加background后变成一大块黑色的,怎么变成间隔的一块一块的,如图