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之后就不行了。

WPF不需要你所说的这样获取选中单元格的数据,现在你的DataGrid已经绑定了,那么它对应的数据就是它的或是它上级的DataContext,因为你例举的xaml不全,只能看出此单元格对应的是ResShare这个属性,设置一下触发器:
<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某行某列的值

wpf datagrid中如何获取选中行中模板如textbox,combobox的内容

WPF DataGrid获取选择行的数据

如何获取 WPF DataGrid 以将更改保存回数据库?

在wpf中怎么获取datagrid某行某列的值啊?急!跪求!

如何获取 WPF DataGrid 的单元格级别组合框?