如何将额外的参数传递给Tapped Event

本文关键字:参数传递 Tapped Event | 更新日期: 2023-09-27 18:00:54

我在Windows手机应用程序8.1中以编程方式创建10个文本块
现在,我想将Tapped事件添加到每个TextBlock,并将额外的参数传递给它,这样我就可以找到哪个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
}

如何传递额外的参数?

如何将额外的参数传递给Tapped Event

正如@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
}