通过Tag属性可以设置自定义的数据,使用GetCellContent方法可以到单元格内的控件,所以就可以得到你点击的是哪一行了。点击的操作就很容易了。
下面的是全部的源代码
<xmp></xmp>Page.xaml.cs
Page,xaml
- <UserControlxmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
- x:Class="DataGridSnippets.Page"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Width="600"Height="Auto">
- <ScrollViewerVerticalScrollBarVisibility="Auto"BorderThickness="0">
- <StackPanelMargin="10,10,10,10">
- <data:DataGridx:Name="dataGrid1"
- Height="200"Margin="0,5,0,10"
- AutoGenerateColumns="False"LoadingRow="dataGrid1_LoadingRow">
- <data:DataGrid.Columns>
- <data:DataGridTextColumnHeader="序号"Width="120"Binding="{BindingIndexName}"/>
- <data:DataGridTextColumnHeader="姓名"Width="120"Binding="{BindingUserName}"/>
- <data:DataGridTextColumnHeader="地址"Width="120"Binding="{BindingAddress}"/>
- <data:DataGridTemplateColumnHeader="功能按钮"Width="80">
- <data:DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <StackPanelOrientation="Horizontal">
- <ButtonContent="初始化内容"x:Name="Button1"Click="Button1_Click"Tag=""></Button>
- </StackPanel>
- </DataTemplate>
- </data:DataGridTemplateColumn.CellTemplate>
- </data:DataGridTemplateColumn>
- </data:DataGrid.Columns>
- </data:DataGrid>
- <TextBlockx:Name="msg"></TextBlock>
- </StackPanel>
- </ScrollViewer>
- </UserControl>
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Windows;
- usingSystem.Windows.Controls;
- namespaceDataGridSnippets
- {
- publicpartialclassPage:UserControl
- {
- publicPage()
- {
- InitializeComponent();
- //绑定数据
- dataGrid1.ItemsSource=Customer.GetSampleCustomerList();
- }
- privatevoiddataGrid1_LoadingRow(objectsender,DataGridRowEventArgse)
- {
- CustomerbindData=(Customer)e.Row.DataContext;
- Buttonbtn=dataGrid1.Columns[3].GetCellContent(e.Row).FindName("Button1")asButton;
- btn.Content=bindData.UserName;
- btn.Tag=bindData.IndexName+","+e.Row.GetIndex();
- }
- privatevoidButton1_Click(objectsender,RoutedEventArgse)
- {
- Buttonb=senderasButton;
- string[]t=b.Tag.ToString().Split(',');
- msg.Text="你选择的值是:"+t[0]+"是DataGrid的第"+t[1]+"行";
- }
- }
- ///<summary>
- ///数据对象
- ///</summary>
- publicclassCustomer
- {
- publicInt32IndexName{get;set;}
- publicStringUserName{get;set;}
- publicStringAddress{get;set;}
- publicCustomer(Int32indexName,StringuserName,Stringaddress)
- {
- this.IndexName=indexName;
- this.UserName=userName;
- this.Address=address;
- }
- publicstaticList<Customer>GetSampleCustomerList()
- {
- //示例数据
- List<Customer>data=newList<Customer>();
- for(inti=0;i<10;i++)
- {
- data.Add(newCustomer(i*i,"孟宪会之"+i.ToString(),"地址之"+i.ToString()));
- }
- returndata;
- }
- }
- }
本文基于Silverlight 2.0正式版。