给你两种方法:为方便起见我用button代替自定义控件,具体操作还是一样的。
前台代码如下:
我放了一个只有一列模板列的datagrid,一个按钮,一个文本
后台给datagrid绑上数据源
dataGrid1.ItemsSource = new List
{
new People(){Id = 1,Name = "aaa"},
new People(){Id = 2,Name = "bbb"},
new People(){Id = 3,Name = "ccc"}
};
然后就是通过按钮事件来处理模板列中内容
1.使用VisualTreeHelper
2.使用FindName
private void Button_Click(object sender, RoutedEventArgs e)
{
DataGridTemplateColumn tempColumn = dataGrid1.Columns[0] as DataGridTemplateColumn;
DataTemplate dtemp = tempColumn.CellTemplate;
//Button btn = (Button)VisualTreeHelper.GetChild(dtemp.LoadContent(),0); //第一种方法
StackPanel sp = (StackPanel)dtemp.LoadContent(); Button btn = sp.FindName("mybutton") as Button; //第二种方法
txt_result.Text = btn.Tag.ToString(); }
请查看(如何从 Datagrid 中获得单元格的内容?): http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/e1907834-611e-4e38-a47f-650a42087207