Аргументы обработчика событий - PullRequest
0 голосов
/ 08 августа 2011

Я использую следующий код для добавления кнопок в список:

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);  
}

Я хочу передать некоторую переменную о выбранной кнопке в четный обработчик, так как это можно сделать? И если это невозможно, то какие варианты у меня есть, чтобы идентифицировать кнопку и передать некоторые данные о ней обработчику событий?

Ответы [ 4 ]

2 голосов
/ 08 августа 2011

Я предполагаю, что ваш бизнес-объект называется Thead_Data, и вы хотели бы иметь доступ к этому объекту из вашего метода Click:

Во время создания прикрепите ваш объект данных к свойству DataContext или Tag:

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

В вашем обработчике событий приведите DataContext или свойство Tag к вашему бизнес-объекту:

void Button_Click(object sender, RoutedEventArgs e){
 Button btn=(Button)sender;
 Theat_Data td=(Theat_Data)button.DataContext;

 ...

}
1 голос
/ 08 августа 2011

Вы можете получить доступ к отправителю следующим образом:

void Button_Click(object sender, RoutedEventArgs e)
{
    var clickedButton = sender as Button;
}
0 голосов
/ 08 августа 2011

Вы можете написать свой собственный обработчик событий и добавить свои собственные данные в аргументы событий.

0 голосов
/ 08 августа 2011

Я не уверен, что полностью понимаю, что вы спрашиваете, но параметр "отправитель" обработчика событий - это кнопка. Вы должны просто иметь возможность разыграть его:

   Button b = (Button)sender;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...