wpf DataGrid 如何获取DataGridTemplateColumn.CellTemplate 中的TextBox的Text值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf DataGrid 如何获取DataGridTemplateColumn.CellTemplate 中的TextBox的Text值相关的知识,希望对你有一定的参考价值。
我在DataGrid中:
<DataGridTemplateColumn Header="共享资源">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="Binding Path=ResShare" IsEnabled="Binding ShareReadOnly"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
像这种设置了DataGridTemplateColumn.CellTemplate的列,在我单击了任意一个单元格的时候,我怎么才能获取到该单元格里面的数据呢?
如果没有设置DataGridTemplateColumn.CellTemplate的话, 我可以在BeginningEdit中通过
(e.Column.GetCellContent(e.Row) as TextBox).Text 获取到单元格数据,但是设置了CellTemplete之后就不行了。
<TextBox Text="Binding ResShare,UpdateSourceTrigger=PropertyChanged">
嗯,还得在CS代码或是ViewModel中定义一个IsSelected属性,绑定到此控件上,现在你所点击的单元格数据可以直接取绑定的数据源中属性值了。希望对你有帮助,还有疑问请追问或是Hi 参考技术A 既然后绑定了,就直接获取ResShare就是TextBox的Text值。 参考技术B 请问你的问题解决了吗?我也是遇到这个问题。如果可以的话,能把代码给我下?
WPF DataGrid获取选择行的数据
在WPF中,单击DataGrid,如何获取当前点击的行?
比如在MouseDoubleClick事件中,事实上获取的选中行是一个DataRowview,你可以通过以下的方法来获取选中行的数据,需要引用system.IO 和System.Data;
var a =this.exDataGrid.selectItem;
var b= a as DataRowView;
或者var b=(DataRowView) exDataGrid.selectItem
b["FiledName"].ToString(); 其中的数据你可以直接转换
但要注意一个问题,如果你的DataGrid的ItemsSource是对象集合而不是DataTable的话,那么使用DataGrid.SelectedItem as YouClass就可以获得。比如在Linq to sql中你的ItemSource是对象集合,是把表对象当做类对象来进行处理的,只是你转换的应该是这个表类得类型(Product表在dbml中对应Product类)
var mySelectedElement = (Product)exDataGrid.SelectedItem;
int selectedID=mySelectedElement.productID;
以上是关于wpf DataGrid 如何获取DataGridTemplateColumn.CellTemplate 中的TextBox的Text值的主要内容,如果未能解决你的问题,请参考以下文章
wpf datagrid中如何获取选中行中模板如textbox,combobox的内容