[英]How to pass extra parameter to Tapped Event?
我在Windows Phone应用程序8.1中以编程方式创建了10个TextBlock
现在我想向每个TextBlock添加Tapped事件并向其传递额外的参数,以便我可以找到哪个TextBlock被窃听
我使用以下代码创建具有Tapped事件的TextBlock:
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Tapped += TxtName_Tapped;
}
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
// Something
}
如何传递额外的参数?
正如@Ric所建议的,您可以随时执行以下操作:
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
clickedElementName = ((TextBlock)sender).Name ;
if(clickedElementName == "element1")
{
}
}
您可以使用sender
参数来标识TextBlock
,而不是发送额外的参数。
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Name = i.ToString();
txtName.Tapped += TxtName_Tapped;
}
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
TextBlock textBlock = sender as TextBlock;
switch(textBlock.Name)
{
// list possible cases
case "1":
{
// do something
}
}
}
也许您甚至不需要switch语句,因为我不知道确切的要求。
我认为,非常简单的解决方案是使用Tag
属性:
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Tag = i;
txtName.Tapped += TxtName_Tapped;
}
和:
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
int tag = ((TextBlock)sender).Tag;
//do something
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.