2011-08-08 139 views
0

我用下面的代碼按鈕添加到列表:事件處理函數的參數

for (int i=0; i < mov.Theat.Count(); i++) 
{ 
    StackPanel st=new StackPanel(); 
    st.Orientation=System.Windows.Controls.Orientation.Horizontal; 
    st.HorizontalAlignment = HorizontalAlignment.Center; 
    TextBlock tx = new TextBlock(); 
    tx.Text=mov.Theat[i]; 
    st.Children.Add(tx); 
    TextBlock tx2=new TextBlock(); 
    tx2.Text=mov.Time[i]; 
    st.Children.Add(tx2); 
    Button test = new Button(); 
    test.Width=450; 
    test.Content = st; 
    test.Click += new RoutedEventHandler(Button_Click); 
    theatlist.Items.Add(test); 
} 

至於事件處理程序,它如下所示:

void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Theat_Data TD=(App.Current as App).Theat.First(theat => theat.Name==""); 
    PhoneApplicationService.Current.State["Theat"] = TD; 
    this.GoToPage(ApplicationPages.Theat); 
} 

我想通過一些變量關於偶處理程序中的選定按鈕,那麼如何完成?如果這是不可能的,那麼我有什麼選擇來識別按鈕並將它的一些數據傳遞給事件處理程序?

+0

謝謝大家,所有的答案都很有幫助,但HCL的答案是最詳細的:) – Ameen

回答

2

我假設你的業務對象被稱爲Thead_Data,你想有從您的點擊方法中訪問該對象:

在創建過程中,附上您的數據對象到DataContext或Tag屬性:

Button test = new Button(){DataContext=Theat[i]}; 

在事件處理程序,投在DataContext或標籤屬性到你的業務對象:

​​
1

您可以訪問像個發件人是:

void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var clickedButton = sender as Button; 
} 
0

我不知道我完全理解你的要求,但該事件處理程序的「發件人」參數是按鈕。你就應該能夠施展它:

Button b = (Button)sender; 
相關問題