WPF 在datagrid模板列中添加用户控件,在后台如何快速的检索到该控件。急!!!
2个回答
展开全部
给你两种方法:为方便起见我用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(); }
前台代码如下:
<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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询