Как определить элемент списка, из которого была нажата кнопка?

#c# #silverlight #xaml #listbox

#c# #silverlight #xaml #список

Вопрос:

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

 <DataTemplate>
  <StackPanel>
    <TextBlock Text="{Binding Title"/>
    <Button Click="MyBtn_Click"/>
  </StackPanel>
</DataTemplate>
  

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

Ответ №1:

Вы могли бы использовать CommmandParameter кнопки для хранения значения —

 <DataTemplate>
  <StackPanel>     
    <TextBlock Text="{Binding Title}"/> 
    <Button Click="MyBtn_Click" CommandParameter={Binding Title}/>   
    </StackPanel> 
</DataTemplate> 

public void MyBtn_Click(object sender, args)
{
    string MyVal = (sender as Button).CommandParameter.ToString();
}
  

Соглашение заключается в использовании события Command вместо события click для такого рода вещей.