我有一个SelectionChanged
事件并且工作得很好,但是我想知道如何通过点击按钮来“捕获”这个所选项目,他们需要将其作为参数传递给另一个页面并编辑此项目。这是我仍然实现的当前代码和按钮SelectionChanged
,因为这是我需要的。
private void listCarros_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
ListBox listBox = sender as ListBox;
if (listBox != null && listBox.SelectedItem != null)
{
//pega o Carro que foi selecionado
Carro sCar = (Carro)listBox.SelectedItem;
btnEditCar.IsEnabled = true;
btnDeleteCar.IsEnabled = true;
}
else
{
btnEditCar.IsEnabled = false;
btnDeleteCar.IsEnabled = false;
}
}
我需要在此按钮上编辑selectedItem:
private void btnEditCar_Click(object sender, EventArgs e)
{
//Here I need access to the selectedItem on SelectionChanged event.
}
如果您也可以告诉我如何传递对象,因为参数将是完美的。
答案 0 :(得分:3)
您也可以使用绑定
来执行此操作1.将ListBoxItem(Carro对象)绑定到xaml中的“btnEditCar”标记。
Xaml应该是这样的
<Button Name="btnEditCar" OnClick="btnEditCar_Click" Tag="{Binding}"/>
现在在
private void btnEditCar_Click(object sender, EventArgs e)
{
Carro sCar=(Carro)((sender as FrameworkElement).Tag)
}
这是一个很好的做法,只为临时目的创建一个类变量是hack
答案 1 :(得分:1)
更好地了解我的评论。创建一个类级变量是这样的:
请注意,sCar
在方法之外声明,但在类中声明。
Carro sCar = new Carro();
private void listCarros_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
ListBox listBox = sender as ListBox;
if (listBox != null && listBox.SelectedItem != null)
{
sCar = (Carro)listBox.SelectedItem;
...
private void btnEditCar_Click(object sender, EventArgs e)
{
sCar.ProperyYouWantToChange = "Stuff I want to change"
}