Silverlight 2.0 中,DataGrid得到模板列中的按钮,并得到所点击的行号和键值 以及 实体对象

Silverlight 2.0 中,DataGrid得到模板列中的按钮,并得到所点击的行号和键值 以及 实体对象,第1张

概述通过Tag属性可以设置自定义的数据: (1)借助LoadingRow事件,在初始化DataGrid过程中 使用GetCellContent方法,它可以到单元格内的控件。这时,你也就可以得到你点击的是哪一行了,你可以选择将适当的信息赋给该行的Button的Tag属性; 然后在单击button 按钮时,就可以对该信息进行读取和使用了: (2)如果你不关心在某一行,而很需要得到改行绑定的实体。那么,你可

通过Tag属性可以设置自定义的数据:

(1)借助LoadingRow事件,在初始化DataGrID过程中 使用GetCellContent方法,它可以到单元格内的控件。这时,你也就可以得到你点击的是哪一行了,你可以选择将适当的信息赋给该行的button的Tag属性; 然后在单击button 按钮时,就可以对该信息进行读取和使用了:

(2)如果你不关心在某一行,而很需要得到改行绑定的实体。那么,你可以在定义button的时候,将button的Tag属性直接进行空绑定,可以将该该行绑定的实体对象赋值给Tag,那么在单击button时,就可以直接使用该对象了。

这样,点击的 *** 作就很灵活了,也可以解决很多问题了。

XAML 脚本:

< UserControl xmlns:data ="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Data" x:Class ="SilverlightApplication1.Page"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
WIDth
="600" Height ="auto" >
< GrID x:name ="LayoutRoot" Background ="White" >
< ScrollVIEwer VerticalScrollbarVisibility ="auto" borderThickness ="1" borderBrush ="Gray" >
< StackPanel margin ="10" >
< data:DataGrID x:name ="grIDDataList" autoGenerateColumns ="False" LoadingRow ="DataGrID_LoadingRow" Height ="200" margin ="0 5 0 10" >
< data:DataGrID .Columns >
< data:DataGrIDTextColumn header ="序号" WIDth ="80" Binding ="{Binding Index}" />
< data:DataGrIDTextColumn header ="姓名" WIDth ="100" Binding ="{Binding name}" />
< data:DataGrIDTextColumn header ="地址" WIDth ="260" Binding ="{Binding Address}" />

< data:DataGrIDTemplateColumn header ="功能按钮" WIDth ="120" >
< data:DataGrIDTemplateColumn .CellTemplate >
< DataTemplate >
< button x:name ="button" WIDth ="50" Content ="初始化内容" Height ="21" Tag ="{Binding}" Click ="button_Click" ></ button >
</ DataTemplate >
</ data:DataGrIDTemplateColumn.CellTemplate >
</ data:DataGrIDTemplateColumn >
</ data:DataGrID.Columns >
</ data:DataGrID >

< TextBlock x:name ="msg" ></ TextBlock >

</ StackPanel >
</ ScrollVIEwer >
</ GrID >
</ UserControl >

 

后置代码:

public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
grIDDataList.ItemsSource = Customer.GetSampleCustomerList();
}

private voID DataGrID_LoadingRow(object sender,DataGrIDRowEventArgs e)
{
Customer bindData = (Customer)e.Row.DataContext;
button btn = grIDDataList.Columns[3].GetCellContent(e.Row).Findname("button") as button;
btn.Content = bindData.name;
//btn.Tag = bindData.Index + "," + e.Row.GetIndex();
}

private voID button_Click(object sender,RoutedEventArgs e)
{
button b = sender as button;
Customer c = b.Tag as Customer;

msg.Text = "你选择" + c.name + "的Index是:" + c.Index + ",它位于 DataGrID 的第 " + c.Index + " 行";
//string[] t = b.Tag.ToString().Split(',');
//msg.Text = "你选择的值是:" + t[0] + " 是 DataGrID 的第 " + t[1] + " 行";
}
}

///
< summary >
/// 数据对象
///
</ summary >
public class Customer
{
public Int32 Index { get; set; }
public String name { get; set; }
public String Address { get; set; }

public Customer(Int32 indexname,String username,String address)
{
this.Index = indexname;
this.name = username;
this.Address = address;
}

public static List
< Customer > GetSampleCustomerList()
{
//示例数据
List
< Customer > data = new List < Customer > ();
for (int i = 0; i
< 10 ; i++) { data.Add(new Customer(i * i,"Jack 之" + i.ToString(),"地址之" + i.ToString())); } return data; } } 总结

以上是内存溢出为你收集整理的Silverlight 2.0 中,DataGrid得到模板列中的按钮,并得到所点击的行号和键值 以及 实体对象全部内容,希望文章能够帮你解决Silverlight 2.0 中,DataGrid得到模板列中的按钮,并得到所点击的行号和键值 以及 实体对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存