0

我正在使用Windows Phone 7.1(7.5)应用程序。 想法:应用程序从服务器获取数据列表,为每个数据创建一个TextBlock,并为每个应用Tap事件处理程序。 问题:由于我只能对所有元素使用一个处理程序,因此如何识别发件人?动态创建元素的事件处理程序

创建新TextBlock中的一部分:(注:itemsAdded是外部变量,即设置适当的利润)

void addInfoItem(string text) 
    { 
     Thickness tempThick = fatherText.Margin; 
     tempThick.Top += itemsAdded * 58; 
     itemsAdded++; 
     TextBlock temp = new TextBlock() { Text = text, FontSize = 40, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Margin = tempThick }; 
     temp.Tap += whenTapped; 
     ContentPanel.Children.Add(temp); 
    } 

whanTapped事件处理程序:

private void whenTapped(object sender, RoutedEventArgs e) 
    { 
     //how to identify the sender? 
    } 

调试时,“对象发送者“给出了足够的信息来标识发送者 - TextBlock的”Text“属性,但是在编码期间,我从”对象发送者“得到的所有信息如下:Equals,GetHashCode,GetType,ToString。 (ToString只告诉它这通常是一个TextBlock,就这些)。

回答

2

但编码过程中,所有我从 “对象发件人” 得到的是以下几点:
的Equals,GetHashCode的,的GetType,为ToString。

因为Object只支持这些方法,它是所有(几乎)的父类。 和父类可以包含/持有子类memebrs,但您不能访问子成员,除非您将它们转换为子类型。

,所以你的使用可以sender对象,但需要将其投射到您的控制TextBlock获得所需的成员来调用。

TextBlock temp = (TextBlock) sender; 
temp.Invi=okeSomething(); //now you can invoke `TextBlock` memebrs 
+0

感谢,工作=)会标记为10分钟正确答案(说我还不能) –

+0

@IgnasLaukineitis:这是我的一切特权。 –

相关问题