WPF 在datagrid模板列中添加用户控件,在后台如何快速的检索到该控件。急!!!

 我来答
Mickal小米
推荐于2018-04-13 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1775万
展开全部
给你两种方法:为方便起见我用button代替自定义控件,具体操作还是一样的。
前台代码如下:
<StackPanel>
<DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid1" Width="200" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Header">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button x:Name="mybutton" Tag="MyButton" Height="22" Width="50" Content="{Binding Id}"/>
<TextBlock Margin="10 0 0 0" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Button HorizontalAlignment="Center" Margin="10" Click="Button_Click">Search</Button>
<TextBlock x:Name="txt_result"/>
</StackPanel>
我放了一个只有一列模板列的datagrid,一个按钮,一个文本
后台给datagrid绑上数据源
dataGrid1.ItemsSource = new List<People>
{
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(); }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-09
展开全部
请查看(如何从 Datagrid 中获得单元格的内容?): http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/e1907834-611e-4e38-a47f-650a42087207
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式